goland 断点debug不可用

2,490 阅读1分钟

问题

golang 版本从1.19升级到1.20之后,进行debug调试,debug不可用

WARNING: undefined behavior - version of Delve is too old for Go version 1.20.13 (maximum supported version 1.19)

分析

goland默认使用的调试器是基于 delve 的,通过使用命令dlv version 可以看到当前dlv版本环境较低,导致断点调试不可用。

解决

1.更新dlv版本

go get -u github.com/go-delve/delve/cmd/dlv@latest
go install github.com/go-delve/delve/cmd/dlv@latest

查看delve版本

$ dlv version
Delve Debugger
Version: 1.22.1
Build: $Id: 0c3470054da6feac5f6dcf3e3e5144a64f7a9a48 $

2.设置goland 打开 Hele->Edit Customer Properties 添加dlv.path=GOPATH/bin/dlv.exe

#custom GoLand properties (expand/override 'bin\idea.properties')
dlv.path=C:/Users/Administrator/go/bin/dlv.exe

3.重启goland

补充

delve有三种调试模式:

  • dlv attach pid:对正在运行的进程直接进行调试(pid 为进程id)
  • dlv debug:编译源文件并开始调试,main 函数位于同一目录,或者指定完整的 main 函数路径
  • dlv exec filename:从二进制文件启动调试