本文完成较早,新版本的golang已无此问题,目前机器用的是go1.19
本机环境
- go版本: go1.16.3 darwin/arm64
- goland版本:2021.1.1 m1芯片版
- 操作系统:Big Sur 11.3
基本情况
不论是go版本还是goland的版本,都是m1芯片版,使用调试后报错,错误信息就是E74错误
vscode中错误信息如上,goland的错误信息在日志里,虽然进了断点,但是不显示任何变量信息。解决方案在github的issue上,问题2436。
解决方案
- 下载go-delve/delve
我把它放在了GOPATH(我的GOPATH在git clone https://github.com/go-delve/delve.git
~/code/go
)下的src/github.com//go-delve
下,进入clone下来的delve中,切换分支:git checkout -b darwin-arm64-lldb
在编辑器中打开该工程,在如下文件中添加如下代码:
然后进入工程目录:delve/cmd/dlv/
(相对路径),执行以下操作:
go build
go install
这样,在GOPATH下的bin目录里面就会有个dlv,设置你的goland指向它就可以:
dlv.path=/path/to/dlv (路径自己改,这玩意在Help>Edit custom properties),然后可以debug了:
这一切拜Big Sur11.3所赐,lldb成了1205,dlv处理了1200,没处理1205。具体原因可以见上面的链接