起因

新版本的m1是ARM架构,在安装完2020.03版本的Goland后,非debug启动正常,但debug启动的时候报错如下:

rosetta error: failed to allocate vm space for aot

jetbrains的讨论区看了一下,没有什么好的解决方法,只有等delve修复这个bug;

delve里面看到了一些讨论;看到了两个PR

但是官网的最新的 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或者老的版本等