Mac M1 Goland不能调试的问题

Mac M1 Goland不能调试的问题

      • 关于环境
      • 摸索过程
      • 原因分析
      • 最终结论

本文撰写时间为2021年4月17日

  • 花了一个晚上的时间,在最近刚到的Mac mini上搞golang的开发环境,但是一开始总是出现Debug失败的问题
  • 在网上检索各种解决问题的方法都没能最终解决问题

关于环境

  • 现在的golang已经原生支持arm64架构了,我写文章的时候arm的最新版本是 go1.16.3 darwin/arm64
  • 直接去官网下载就可以了 https://golang.google.cn/dl/ 下载后双击安装
    Mac M1 Goland不能调试的问题_第1张图片

摸索过程

  • 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
    Mac M1 Goland不能调试的问题_第2张图片
  • 然后神奇的事情就发生了,在这个原生版本的Goland下,golang程序竟然就可以正常调试了

原因分析

  • 后来经过一番分析,我发现其实是Goland在使用其自带的dlv调试工具时,没有选择到正确的工具导致的调试失败
  • 在调试的时候,终端里面会出现这样的语句:
    在这里插入图片描述
  • 注意看这里圈起来的地方,这个其实就是Goland最终在调试的时候所调用的调试工具
  • 可以看到这里显示的是…/dlv/macarm/dlv,这是正常调用时的;在其它版本Goland调试失败的时候,这里显示调用的会是…/dlv/mac/dlv,所以在调试的时候工具都选错了,就没办法成功调试咯
  • 所以理论上你把这里的dlv换成正确的版本就可以成功调试了,但是我经过尝试,非Goland 2020.3.4版本下的…/dlv/macarm/dlv都是不能正常使用的,所以还是老老实实安装Goland 2020.3.4吧
    Mac M1 Goland不能调试的问题_第3张图片

最终结论

  • 安装Goland 2020.3.4解决一切问题

你可能感兴趣的:(m1,goland,go,go,goland,mac)