问题描述
今天把Go从1.12版本升到了1.14,然后发现在Goland进行Debug时就报错了。
Version of Delve is too old for this version of Go (maximum supported version 1.12, suppress this error with --check-go-version=false)
环境说明
Goland 版本为 2019.2.1
go env
set GOARCH=amd64
set GOCACHE=C:\Users\Administrator\AppData\Local\go-build
set GOENV=C:\Users\Administrator\AppData\Roaming\go\env
set GOEXE=.exe
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOOS=windows
set GOPATH=F:\Go
set GOPROXY=https://mirrors.aliyun.com/goproxy/
set GOROOT=C:\Go
set GOSUMDB=sum.golang.org
set GOTOOLDIR=C:\Go\pkg\tool\windows_amd64
set GCCGO=gccgo
set AR=ar
set CC=gcc
set CXX=g++
set CGO_ENABLED=1
set CGO_CFLAGS=-g -O2
set CGO_CXXFLAGS=-g -O2
set CGO_FFLAGS=-g -O2
set CGO_LDFLAGS=-g -O2
set PKG_CONFIG=pkg-config
set GOGCCFLAGS=-m64 -mthreads -fmessage-length=0 -fdebug-prefix-map=C:\Users\Administrator\AppData\Local\Temp\go-build054006970=/tmp/go-build -gno-record-gcc-switches
分析
这是因为本地delve组件版本过低导致的,2019.2.1版本的Goland默认支持go 1.13
查看F:\Go (GOPATH目录)
目录下存在github.com/go-delve/delve/cmd/dlv
,而且bin目录下也存在dlv.exe
文件,用命令行执行 dlv.exe version
得到的版本是1.2.1
解决办法
1. 更新dlv
更新dlv到最新版本。更新后dlv.exe 在 GOPATH的bin目录下,我这里是F:/Go/bin/
go install github.com/go-delve/delve/cmd/dlv@latest
注:如果install失败,可以直接去github用git下载github.com/go-delve/delve/cmd/dlv。
然后命令行进入到下载好的目录,直接go build
编译dlv,将编译好的dlv.exe复制到F:/Go/bin/
目录下
2. 设置Goland
打开 Hele->Edit Customer Properties
,若提示文件不存在,点击创建。然后在新加一行 dlv.path=F:/Go/bin/dlv.exe
重启就可以了
3. 如果还报错Connection refused
如果Debug还是报错
Connection refused: getsockopt: localhost/127.0.0.1:61148
检查端口61148是dlv.exe监听的
C:\Users\Administrator>netstat -ano | findstr 61148
TCP 127.0.0.1:61148 127.0.0.1:61149 ESTABLISHED 20344
C:\Users\Administrator>tasklist | findstr 20344
dlv.exe 20344 Console 1 55,012 K
- 若未发现dlv,则是dlv.exe未启动,或者是端口被其他程序占用了,确认第二步中的dlv.path配置是否正确,若是被其他程序占用了,可以重新启动debug来切换端口再试
- 若确认了dlv监听的端口,防火墙/安全软件添加 F:/Go/bin/dlv.exe 后再尝试。
评论区