mac m1 goland调试模式踩坑记录

背景:在使用 m1 芯片的 mac ,进行 go 项目开发时,发现 debug 模式无法正常调试。

版本环境

go: 1.20.1
goland: 2021.1.3

无法使用调试模式

mac m1 环境下启动 goland 后,发现无法正常使用 debug 模式,接口请求后会直接卡死。

原因: go 版本过高,go >= 1.20 的版本下,goland 的 debug 会失败。

将 go 版本回退至 1.9.x,操作方法如下:

  1. 删除旧的go版本,go配置文件、环境变量等:sudo rm -rf $GOROOT,sudo rm -rf $GOPATH,rm -rf /etc/paths.d/go,vim ~/.bash_profile(清除go相关环境变量)
  2. 在官网选择下载所需的新版本,go官网地址,这边我使用的是 1.19.10 。
  3. 按照步骤安装完成,随后通过命令go version查看是否安装完成。
  4. 创建 gopath 路径: mkdir youpath/go。

切换为对应的版本后,打开 goland 启用调试模式,发现可以进行debug并使用断点了。

调试模式无法下一步

在调试模式下,可以通过 步过(step over)一行行运行代码,这边运行项目时,发现无法使用 步过 进行代码调试,在网上查询了很多方法都不行,尝试自己寻找解决办法。在通过 goland 开启 debug 模式时,发现是通过 goland 内置的 dlv 启动的,于是怀疑是否因为 dlv 的问题。

下载新的dlv

执行以下命令,覆盖 goland 默认的 dlv:

shell 复制代码
// 1.找到 goland 使用的 dlv 的目录,我这边是:/Applications/GoLand.app/Contents/plugins/go/lib/dlv/macarm/

// 2.把生成的新的 dlv 复制至goland 使用的 dlv 的目录下。
git clone https://github.com/go-delve/delve.git

cd delve/cmd/dlv

go build -o GoLand.app/Contents/plugins/go/lib/dlv/macarm/dlv main.go

执行完上述操作后,重启 goland 启动 debug 模式,发现已经可以正常使用。

相关推荐
tachibana29 小时前
Go 语言里的 Context 是什么?
开发语言·后端·golang·go·语言
桌管小李14 小时前
内网终端安全再升级|迪康端点安全 2609 版本四大新功能解读
大数据·windows·安全·macos·网络安全
情 九15 小时前
Dify 本地环境搭建教程:macOS / Windows
windows·macos
茉莉玫瑰花茶16 小时前
GO [ 数据格式 ]
服务器·网络·算法·golang
土豆.exe17 小时前
chunked 编码的行尾:Go、h11 与 Tomcat 各错在哪一处
开发语言·网络安全·golang·tomcat
茉莉玫瑰花茶1 天前
GO [ 标准库 ]
开发语言·后端·golang
2501_915918412 天前
在 Xcode 中运行和调试单元测试的完整指南
ide·vscode·macos·ios·单元测试·个人开发·xcode
Lalolander2 天前
灵基Lingee怎么下载安装?Mac 与 Win 详细指南
大数据·人工智能·科技·macos·金蝶灵基
老李IT笔记2 天前
远程取设备日志:iOS、tvOS 和 macOS 三端的同意方式不一样
macos·ios
JasonSJX2 天前
DRM-X 5.0 PDF 保护更新:Windows 与 Mac 打印保留用户水印,ZJGet iOS 版支持 PDF 阅读
macos·pdf