在使用 GoLand/IntelliJ IDEA 调试 Go 程序时,因 Go 版本升级到 1.25.0 而 Delve 调试器版本过旧,导致无法监听断点并抛出版本不兼容警告。解决方案是通过 go get -u 拉取最新版 Delve,手动编译安装后替换 IDE 内置的调试器二进制文件。
调试Go程序时,无法监听程序断点,无法拦截断点,并抛出WARNING警告
textGOROOT=/usr/local/go #gosetup GOPATH=/Users/tianjun/go #gosetup /usr/local/go/bin/go build -o /Users/tianjun/Library/Caches/JetBrains/IntelliJIdea2024.1/tmp/GoLand/___go_build_agentrun_gateway -gcflags all=-N -l agentrun-gateway #gosetup "/Users/tianjun/Library/Application Support/JetBrains/IntelliJIdea2024.1/plugins/go-plugin/lib/dlv/macarm/dlv" --listen=127.0.0.1:50137 --headless=true --api-version=2 --check-go-version=false --only-same-user=false exec /Users/tianjun/Library/Caches/JetBrains/IntelliJIdea2024.1/tmp/GoLand/___go_build_agentrun_gateway -- API server listening at: 127.0.0.1:50137 debugserver-@(#)PROGRAM:LLDB PROJECT:lldb-1703.0.236.21 for arm64. Got a connection, launched process /Users/tianjun/Library/Caches/JetBrains/IntelliJIdea2024.1/tmp/GoLand/___go_build_agentrun_gateway (pid = 4324). WARNING: undefined behavior - version of Delve is too old for Go version go1.25.0 (maximum supported version 1.23)
textWARNING: undefined behavior - version of Delve is too old for Go version go1.25.0 (maximum supported version 1.23)
text1.25.0
前提 GOPATH 一定是配置好了的
shell# 拉最新的依赖
tianjun@iodboy agentrun-gateway % go get -u github.com/go-delve/delve
go: added github.com/go-delve/delve v1.26.1
# 上一步的版本是 v1.26.1,所以要到下面这个路径去,其他版本的自己替换一下,都明白怎么做吧
tianjun@iodboy agentrun-gateway % cd $GOPATH/pkg/mod/github.com/go-delve/delve@v1.26.1/cmd/dlv
# 构建安装 v1.26.1 版本的 delve。没报错即可
tianjun@iodboy dlv % go install
# 替换旧的dlv,后面那一大串路径,麻烦各位到你们自己的异常信息里面找找
tianjun@iodboy dlv % cp "$GOPATH/bin/dlv" "/Users/tianjun/Library/Application Support/JetBrains/IntelliJIdea2024.1/plugins/go-plugin/lib/dlv/macarm/dlv"



本文作者:Odboy
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 CC 4.0 BY-SA 许可协议。转载请注明出处!