GoLand,点击debug报错:
GOROOT=/Users/tiantian19/sdk/go1.21.9 #gosetup
GOPATH=/Users/tiantian19/go #gosetup
/Users/tiantian19/sdk/go1.21.9/bin/go build -o /Users/tiantian19/Library/Caches/JetBrains/GoLand2023.1/tmp/GoLand/___go_build_icode_baidu_com_baidu_cov_smartUT_comate -gcflags all=-N -l icode.baidu.com/baidu/cov/smartUT-comate #gosetup
/Applications/GoLand.app/Contents/plugins/go-plugin/lib/dlv/macarm/dlv --listen=127.0.0.1:58724 --headless=true --api-version=2 --check-go-version=false --only-same-user=false exec /Users/tiantian19/Library/Caches/JetBrains/GoLand2023.1/tmp/GoLand/___go_build_icode_baidu_com_baidu_cov_smartUT_comate --
API server listening at: 127.0.0.1:58724
debugserver-@(#)PROGRAM:LLDB PROJECT:lldb-1600.0.39.109for arm64.
Got a connection, launched process /Users/tiantian19/Library/Caches/JetBrains/GoLand2023.1/tmp/GoLand/___go_build_icode_baidu_com_baidu_cov_smartUT_comate (pid = 81255).
Exiting.
could not launch process: decoding dwarf section info at offset 0x0: too short - debuggee must not be built with 'go run' or -ldflags='-s -w', which strip debug infoDebugger finished with the exit code 1
解决方法:
升级dlv
- 下载delve
git clone https://github.com/go-delve/delve
cd /delve/cmd/dlv 进入build目录,
go build main.go 编译main.go并生成可执行文件main (这里要确保工作用户与目录的权限一致,否则无法编译)
mv main dlv 修改可执行文件名 - 替换goland dlv
查出dlv路径 需要golang执行一下debug
ps -ef|grep dlv
替换dlv
拷贝旧的debug文件,将新的dlv替换旧的
/Applications/GoLand.app/Contents/plugins/go-plugin/lib/dlv/macarm/dlv
如果还不能debug
查看GoLand中使用的go版本与工程go mod文件中指定版本是否一致