本文撰写时间为2021年4月17日
- 花了一个晚上的时间,在最近刚到的Mac mini上搞golang的开发环境,但是一开始总是出现Debug失败的问题
- 在网上检索各种解决问题的方法都没能最终解决问题
关于环境
- 现在的golang已经原生支持arm64架构了,我写文章的时候arm的最新版本是 go1.16.3 darwin/arm64
- 直接去官网下载就可以了 https://golang.google.cn/dl/ 下载后双击安装
摸索过程
- IDE我一开始下载的是最新版的Goland 2021.1 但就是不能调试
- 后来我就找了两篇文章,但是都没有解决我的问题
https://blog.csdn.net/thinkthewill/article/details/115682380
https://www.cnblogs.com/maxzhang1985/p/14272787.html
- 但是后来我打开活动监视器的时候突然发现这个Goland不是原生M1的程序,是Intel转译过来的,但其实我是知道JetBrains的Goland已经是原生支持了M1芯片的
- 于是我又试了Goland 2020.3.1 ,依然是Intel转译的,并且也无法进行Golang程序的调试
- 经过多个版本的尝试,终于在安装了Goland 2020.3.4 版本的时候,活动监视器显示是原生支持的,可以注意看架构显示的是Apple,我测试过的其他版本的都是显示的Intel
- 然后神奇的事情就发生了,在这个原生版本的Goland下,golang程序竟然就可以正常调试了
原因分析
- 后来经过一番分析,我发现其实是Goland在使用其自带的dlv调试工具时,没有选择到正确的工具导致的调试失败
- 在调试的时候,终端里面会出现这样的语句:
- 注意看这里圈起来的地方,这个其实就是Goland最终在调试的时候所调用的调试工具
- 可以看到这里显示的是…/dlv/macarm/dlv,这是正常调用时的;在其它版本Goland调试失败的时候,这里显示调用的会是…/dlv/mac/dlv,所以在调试的时候工具都选错了,就没办法成功调试咯
- 所以理论上你把这里的dlv换成正确的版本就可以成功调试了,但是我经过尝试,非Goland 2020.3.4版本下的…/dlv/macarm/dlv都是不能正常使用的,所以还是老老实实安装Goland 2020.3.4吧
最终结论
- 安装Goland 2020.3.4解决一切问题