建议使用homebrew安装,即在终端中键入
brew install gdb
安装完成后,gdb应该会位于/usr/local/bin/gdb
如果我使用gdb test对test进行调试,然后在命令行中键入run, 则会报错:
>run
Starting program: /Users/evian/Downloads/test/test
Unable to find Mach task port for process-id 358: (os/kern) failure (0x5).
(please check gdb is codesigned - see taskgated(8))
这是没有证书的缘故。接下来,我们需要使用证书对gdb进行签名:
1.打开应用程序>其他>钥匙串访问
2.在菜单栏中选择证书助理>创建证书
3.名称随便填(比如说gdb_codesign), 身份类型为「自签名根证书」,证书类型为「代码签名」,并勾选「让我覆盖这些默认值」。
4.一路继续,直到让我们指定用于该证书的位置,选择「系统」。然后输入密码即可创建
5.接着,我们可以在「系统」钥匙串的「我的证书」种类中找到这个证书
6.双击该证书打开,然后展开「信任」栏目,将「使用此证书时」选择为「始终信任」,关闭时输入密码即可保存。
7.新建一个叫做gdb-entitlement.xml的文件,其内容为
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.cs.debugger</key>
<true/>
</dict>
</plist>
8.在终端键入
codesign --entitlements gdb-entitlement.xml -fs gdb_codesign /usr/local/bin/gdb
9.在签名过后,我们终于可以使用gdb了,但是,当我们输入run的时候,新的问题出现了
>run
Starting program: /Users/evian/Downloads/test/test
[New Thread 0x1803 of process 1090]
[New Thread 0x1903 of process 1090]
# 退出后,执行以下命令即可正常使用gdb了
echo "set startup-with-shell off" >> ~/.gdbinit