M1下Goland无法debug
硬件信息:
系统:MacOS 12.01
芯片:M1 Max
Goland:2021.3 Build #GO-213.5744.269
Go:go1.17.4 darwin/arm64
问题描述:
无法执行Debug,报错信息如下已无法找到,大致为:“Failed to fully copy pty output”
原因分析:
通过展开debug日志信息:

可以看到,Goland实际上运行了指令:
/Applications/GoLand.app/Contents/plugins/go/lib/dlv/macarm/dlv --listen=127.0.0.1:50990 --headless=true --api-version=2 --check-go-v
ersion=false --only-same-user=false exec /private/var/folders/hg/8gwj2pxx5b39r2dhs4h93f9w0000gn/T/GoLand/___go_build_task_co --
一波Google后,了解到Goland在Debug时使用了神器:delve(简称dlv) 传送门 。
找到正主了,一波常规操作:撸一眼更新日志传送门 。
查找关键词“M1”,很快就看到重点了:

当碰到M1跑了x86软件时,debug会中断。于是乎,开始排查软件架构。
dlv:Goland捆绑的,暂且放过。好吧, 作为一个老程序员,博主并不信,自己想办法编译了一个arm架构的,然后Goland使用了arm架构的,其操作可以参考:M1 Macbook Goland无法debug的问题解决。后来问题解决后,发现Goland自带的就是arm架构的。
至此:Goland、delve、Go全部正确,那么问题出在哪里呢?
Long time ago…根据网络的各种方法试过后,都没有发现有效方法
找不到方法,有可能是问题没识别对,于是回到问题本身。
直接在终端执行debug指令,发现不一样的信息:

出现了新信息:
debugserver-@(#)PROGRAM:LLDB PROJECT:lldb-1100.0.28..1for x86_64.
重点来了,debugserver是x86架构的,直觉来了:解决这个,说不定就好了。
解决方案:
查询资料发现,LLDB和debugserver是Apple开发里面必备的逆向工具。在本案例下,这个服务作为系统底层提供的Debug服务端,大致了解到这够了🐶,接下来就是解决问题。
系统是最新的,电脑是正版的,那只能猜想Apple安装系统没更新基础工具。
直接Google:update Xcode components 传送门
随手使用了一个方法:
sudo rm -rf /Library/Developer/CommandLineTools
xcode-select --install
坐等…
验证:

Bingo~
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
