Mac OS X 下安装 GDB

LiteIDE 可以方便调试 Go 程序,它是用的 GDB 调试的,如果没有安装 GDB 的话,运行“调试”就会提示:

1
2
11:21:45 GdbDebugger: /usr/local/bin/gdb was not found on system PATH (hint: is GDB installed?)
11:21:45 LiteDebug: Failed to start debugger

下边就说说怎么在 OS X 平台在安装 GDB。

Homebrew

用 Mac 的想必都知道这个了, 如果你还没有安装,去http://brew.sh/ 看看吧,或者直接用下边的命令安装

1
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

GDB

有了 brew 就方便了,直接执行下边的命令安装 gdb

1
$ brew install homebrew/dupes/gdb

如果上边的命令不行的试试下边的这个:

1
$ brew install https://raw.github.com/Homebrew/homebrew-dupes/master/gdb.rb

之后运行gdb --version看看是否安装成功

证书 & 授权

有了 brew 后,安装 so easy。不过先别高兴的太早,在 LiteIDE 中随便找一个程序“调试”一下,会发现“控制台”中报错:

1
2
3
10000012^error,msg="Unable to find Mach task port for process-id 42864: (os/kern) failure (0x5).
(please check gdb is codesigned - see taskgated(8))"
(gdb)

这是由于 OS X 的安全机制阻止了我们的 GDB 对要调试的程序进行完全控制,所以我们要对 GDB 赋予合适的权限。

首先创建一个系统代码签名信任证书:

  1. 启动“钥匙串访问”应用(/Applications/Utilities/Keychain Access.app)
  2. 打开菜单:钥匙串访问 -> 证书助理 -> 创建证书
    输入证书名称,如:gdb-cert;
    选择身份类型:自签名根证书 (Identity Type to Self Signed Root)
    选择证书类型:代码签名 (Certificate Type to Code Signing)
    勾选:让我覆盖这些默认签名 (select the Let me override defaults)

  3. 一路next,直到选择存放证书地址,选择:系统。这样证书就创建好了

  4. 设置证书自定义信任
    右键刚才创建的 gdb-cert 证书,选择“显示简介” (Get Info)
    点击“信任”,会显示可以自定义的信任选项,“代码签名”选择“总是信任” (Code Signing to Always Trust)

其次,将证书授予gdb,执行命令

1
2
3
$ which go
/usr/local/go/bin/go
$ codesign -s gdb-cert /usr/local/bin/gdb

如果你创建的证书名不是gdb-cert的话注意自行替换

这样授权后,在 LiteIDE 中运行“调试”的话还是会提示错误please check gdb is codesigned,只要重启一下就好了。

之后我们便可以用 gdb 调试 go 了,但是每次使用的时候都会提示输入管理员密码。这是由于之前制作的证书是在系统下面的,所以每次执行 gdb 都会提示管理员密码。
解决方法也很简单,打开钥匙串访问,将“系统”下面的 gdb-cert 拷贝一份放到“登录”下面就行了。

参考:
解决Mac下GDB提示签名错误
Mac OS X10.9安装gdb