Mac电脑m1版本使用VSCODE调试golang项目时遇到的问题
文章发布较早,内容可能过时,阅读注意甄别。
新的 Mac 系统使用起来,各个方面都非常舒服,不过因为 CPU 架构的变化,在使用过程中也遇到了不少奇怪的问题,这自然难免,不同的架构之间本身就会存在软件兼容性的问题,今天在通过 vscode 调试 go 项目的时候,就遇到这类问题了。
这里直接总览说明下问题原因以及思路:
- 检查 golang 环境版本,确保为 arm 版本的。
- 重装编辑器使用的 dlv 工具,重装之后,重启下 vscode。
- 记得检查一下自己的编辑器,看看是不是也是 arm 版本的。
一开始与往常一样,配置了launch.json
之后,就开始运行调试,然后就看到了这样的报错:
could not launch process: stub exited while waiting for connection: exit status 0
1
后来查看网上说法,发现自己的 golang 版本安装成 amd 的了,尽管运行项目的时候没有任何问题,但是现在调试的时候,就不行了。
于是,需要先把 golang 环境换成 arm 版本的,这里大家根据自己的实际情况调整即可。我是通过压缩包的方式安装,因此直接删除原来的版本,然后下载新版,安装即可:
sudo rm -rf /usr/local/go
wget https://studygolang.com/dl/golang/go1.17.8.darwin-arm64.tar.gz
tar xf go1.17.8.darwin-arm64.tar.gz
sudo mv go /usr/local/go
source ~/.zshrc
1
2
3
4
5
2
3
4
5
重新安装之后,查看一下当前的 go 版本:
$ go version
go version go1.17.8 darwin/arm64
1
2
2
然后再次运行调试,发现仍旧不行,还会报错,网上冲浪看了不少的答案,也都是没有效果,有的人说把插件全部删除重新安装,这个的确是需要重新安装的。
cd $GOPATH/bin
rm -f *
1
2
2
然后在 vscode 的命令窗口中输入 >go:install
,选择所有的插件重新安装。重装之前最好重启一下 vscode。
我这里重新安装之后,发现仍旧不行,遇到了一个新的错误:
could not launch process: can not run under Rosetta, check that the installed build of Go is right for your CPU architecture
1
这个问题在 dlv 插件的 issue 中有不少人遇到的,最后,我终于在其中一个评论 (opens new window)中获得灵感。
如果 golang 环境以及插件都已经是 arm 架构之下的,那么可能需要再检查一下编辑器,是不是 arm 版本的,我看了下自己安装的 vscode,果然是 Intel 版本的,于是去到官网下载了 arm 版本的,重新安装之后,发现调试能够正常运行了。
上次更新: 2024/07/04, 22:40:37