前言
换电脑,Go 环境带来一些麻烦,耽误很多时间,稍作记录。
原始电脑是 Mac 旧款,CPU x86 构型,新电脑 M2,因为旧电脑里本地文件很多,为了简化搬迁,还是用了 Mac 自带的迁移,会有调试环境问题意料中,因为先前有朋友 x86 -> M1,解决起来也不困难所以也选择了同步,不过自己还是踩坑花了很多时间修复。
核心问题就是 Go 环境问题,不能 Debug
异常表现
Go Run 异常
Go 的工程不可跑,因为迁移过来 Go 还停留在安装的 x86 版本上,必须卸载重装
shell
$ which go # 找到 go 命令所在路径,删到外面的 go 层
$ rm -rf /usr/local/go
$ rm -rf /etc/paths.d/go
如果 rc 文件里有一些设定,也清掉
Go 重新安装
一定要下载类似 go1.19.10.darwin-arm64.pkg
这种 darwin-arm64
的安装包,一路安装后,go version
运行正常即可
后续 go run
一个 hello world 正常表示通过
Debug 异常
后续可以看到 Debug 仍然不可以正常执行,因为 Go 的 Debug 用的 dlv 低版本也是不支持的,因此也需要重装,卸载 dlv 类似 卸载 Go,找到命令所在路径,卸载,而后安装。
安装成功后,尝试 debug,进入了痛苦环节。
could not launch process: can not run under Rosetta, check that the installed build of Go is right for your CPU architecture
这个报错卡了非常多时间,也查了各种材料,多数是反馈 Go 版本不对,Go 环境变量有问题,反复尝试,各种换 Go 版本,dlv 版本
无果
Debug 异常解决
彻底清除所有跟 Go 相关的文件,工具,终得解决
- 重新卸载 Go,类似先前步骤
- 卸载 Goland,上文的 dlv 不可用 Goland 更是不能 Debug,期间还有各种奇怪情况,删干净,可以用 cleaner one 扫下应用相关文件,都给删了
- 卸载删除 dlv
- 因为本地曾经安装过 gvm 用来多版本管理,删除所在文件
- 原本 ~/go 删除,因为里面比较多本地工程,所以 mv backup 一下,别真删了
之前所有的 重装主要在 Go,dlv,Goland 上,
此外也尝试了 卸载调试xcode,重装
shell
# 卸载
$ sudo rm -rf $(xcode-select -print-path)
# 重装
$ xcode-select --install
没有后面二者,都没成功,清理干净而后重装
- 重装 Go,这次装的还是 1.21
- 重装 Goland
- 重装 dlv,
问题来了
dlv 先前尝试时,手动安装,brew 安装均未成功 debug,本次想 brew 简化点装,装完后,Debug 仍获得上图错误,因为 brew 也是从原先机器环境同步过来的,不建议这种方式安装。
再次卸载 dlv 手动装,请见:https://github.com/go-delve/delve/tree/master/Documentation/installation
而后最终成功通过
稍加注意,Go 环境变量
GOARCH='arm64'
GOHOSTARCH='arm64'
GOHOSTOS='darwin'
Goland 安装也要选择 apple M2的那种版本,类似 goland-2023.3.2-aarch64.dmg
在没有安装 dlv 时 Goland 也是不能进行 Debug 的,会提示你配置 dlv 路径
Help
-> Edit Custom Properties
添加
dlv.path=/your/dlv/path
而后 Goland 断点调试
环境恢复