起因
新版本的m1是ARM
架构,在安装完2020.03
版本的Goland
后,非debug
启动正常,但debug
启动的时候报错如下:
rosetta error: failed to allocate vm space for aot
在jetbrains的讨论区看了一下,没有什么好的解决方法,只有等delve
修复这个bug;
在delve
里面看到了一些讨论;看到了两个PR
- Go 1.16 support branch ,主要解决
arm
版本和filepath的问题 - Added support for darwin/arm64 using gdbserver,这个PR已经支持了ARM架构
但是官网的最新的 v1.5.1版本比较早,这两个PR还未正式发布,所以只能自己动手编译;
操作
- 在 golang download 下载go1.16beta1 arm版本,替换自己的
go
版本,升级为1.16.
➜ ~ go version
go version go1.16beta1 darwin/arm64
- 下载 delve源码,
master
分支,编译make
即可在$GOPATH/bin
下面得到一个dlv
的文件
make install
- 在goland当中使用最新的
delve
进行debug
,在help -> Edit Custom Vm Option
添加如下配置,重启IDE
-Ddlv.path=/Users/admin/projects/go/bin/dlv
也可以直接替换
cp dlv /Applications/GoLand.app/Contents/plugins/go/lib/dlv/mac/dlv
其他异常
IDE版本可能不对;
- Goland需要使用arm版本,而使用了intel版本,会导致如下报错:https://github.com/go-delve/delve/pull/2285#issuecomment-757105998
- Go运行版本不对,比如说非arm或者老的版本等