新的Mac系统使用起来,各个方面都非常舒服,不过因为CPU架构的变化,在使用过程中也遇到了不少奇怪的问题,这自然难免,不同的架构之间本身就会存在软件兼容性的问题,今天在通过vscode调试go项目的时候,就遇到这类问题了。
这里直接总览说明下问题原因以及思路:
- 检查golang环境版本,确保为arm版本的。
- 重装编辑器使用的dlv工具,重装之后,重启下vscode。
- 记得检查一下自己的编辑器,看看是不是也是arm版本的。
launch.json
could not launch process: stub exited while waiting for connection: exit status 0
后来查看网上说法,发现自己的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
重新安装之后,查看一下当前的go版本:
$ go version
go version go1.17.8 darwin/arm64
然后再次运行调试,发现仍旧不行,还会报错,网上冲浪看了不少的答案,也都是没有效果,有的人说把插件全部删除重新安装,这个的确是需要重新安装的。
cd $GOPATH/bin
rm -f *
>go:install
我这里重新安装之后,发现仍旧不行,遇到了一个新的错误:
could not launch process: can not run under Rosetta, check that the installed build of Go is right for your CPU architecture
这个问题在dlv插件的issue中有不少人遇到的,最后,我终于在其中一个评论 (opens new window)中获得灵感。
如果golang环境以及插件都已经是arm架构之下的,那么可能需要再检查一下编辑器,是不是arm版本的,我看了下自己安装的vscode,果然是Intel版本的,于是去到官网下载了arm版本的,重新安装之后,发现调试能够正常运行了。