问题描述
今天把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
因为本地已经存在,所以,需要用到-u
参数,强制更新包以及依赖
go get -u github.com/go-delve/delve/cmd/dlv
注:如果get失败,可以直接去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
重启就可以了