MacOS M1/M2 Go Debug 配置

前言

换电脑,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 相关的文件,工具,终得解决

  1. 重新卸载 Go,类似先前步骤
  2. 卸载 Goland,上文的 dlv 不可用 Goland 更是不能 Debug,期间还有各种奇怪情况,删干净,可以用 cleaner one 扫下应用相关文件,都给删了
  3. 卸载删除 dlv
  4. 因为本地曾经安装过 gvm 用来多版本管理,删除所在文件
  5. 原本 ~/go 删除,因为里面比较多本地工程,所以 mv backup 一下,别真删了

之前所有的 重装主要在 Go,dlv,Goland 上,

此外也尝试了 卸载调试xcode,重装

shell 复制代码
# 卸载
$ sudo rm -rf $(xcode-select -print-path)
# 重装
$ xcode-select --install 

没有后面二者,都没成功,清理干净而后重装

  1. 重装 Go,这次装的还是 1.21
  2. 重装 Goland
  3. 重装 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 断点调试

环境恢复

相关推荐
却尘9 小时前
一篇小白也能看懂的 Go 字符串拼接 & Builder & cap 全家桶
后端·go
ん贤10 小时前
一次批量删除引发的死锁,最终我选择不加锁
数据库·安全·go·死锁
楚轩努力变强10 小时前
iOS 自动化环境配置指南 (Appium + WebDriverAgent)
javascript·学习·macos·ios·appium·自动化
mtngt111 天前
AI DDD重构实践
go
猫头虎1 天前
如何解决 OpenClaw “Pairing required” 报错:两种官方解决方案详解
网络·windows·网络协议·macos·智能路由器·pip·scipy
皮卡车厘子2 天前
Mac 挂载目录
macos
良逍Ai出海2 天前
在 Windows & macOS 上安装 Claude Code,并使用第三方 Key 的完整教程
windows·macos
热爱生活的五柒2 天前
linux/mac/wsl如何使用claude code,并配置免费的硅基流动API?(官方的需要付费订阅)
linux·运维·macos
Grassto2 天前
12 go.sum 是如何保证依赖安全的?校验机制源码解析
安全·golang·go·哈希算法·go module
胖胖大王叫我来巡山2 天前
mac本地安装DataEase桌面版
macos