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 断点调试

环境恢复

相关推荐
lypzcgf3 小时前
Coze源码分析-资源库-编辑知识库-后端源码-基础设施/存储层
系统架构·go·知识库·coze·coze源码分析·智能体平台·ai应用平台
sweethhheart10 小时前
【typora激活使用】mac操作方式
前端·数据库·macos
hzulwy11 小时前
微服务注册与监听
微服务·云原生·架构·go
豆浆Whisky13 小时前
Go interface性能调优指南:避免常见陷阱的实用技巧|Go语言进阶(10)
后端·go
库奇噜啦呼18 小时前
【iOS】简单的四则运算
macos·ios·cocoa
HoJunjie1 天前
macOS sequoia 15.7.1 源码安装node14,并加入nvm管理教程
macos·node.js
心灵宝贝1 天前
Principal v6.15 中文汉化版安装教程|Mac .dmg 文件安装步骤详解
macos
你好龙卷风!!!1 天前
mac | Windows 本地部署 Seata1.7.0,Nacos 作为配置中心、注册中心,MySQL 存储信息
windows·mysql·macos
源文雨1 天前
MacOS 下 Warp ping 局域网设备报错 ping: sendto: No route to host 的解决方法
运维·网络协议·安全·macos·网络安全·ping
liulilittle2 天前
macOS 内核路由表操作:直接 API 编程指南
网络·c++·macos·策略模式·路由·route·通信