您必须签署 gdb 以受信任才能控制另一个进程的执行。这是 ElCapitan 中存在的安全结构的一部分(自 Mavericks 以来一直如此)。
您可以按照以下说明执行此操作(摘自博文http://ntraft.com/installing-gdb-on-os-x-mavericks/,其中包含有关该主题的更多信息)。
认证 GDB
打开 Keychain Access 应用程序 (/Applications/Utilities/Keychain Access.app)。通过菜单导航到 Keychain Access > Certificate Assistant > Create Certificate...
输入证书的名称。对于这个操作方法,我将其称为“gdb-cert”。完全按照如下所示设置字段。
最长有效期为 999 天。我真的不想再处理这个问题了,所以我要把它最大化。 /* 附录:这意味着你必须在 999 天后再次执行此操作,即 2.7 年。您可能希望将此页面添加为书签。 */
继续点击“继续”按钮,直到系统要求您提供位置。将其设置为“系统”。如果您无法将其保存到系统钥匙串,则将其保存到登录钥匙串。您可以稍后导出证书,然后将其导入系统钥匙串。我不必这样做,如果您有任何问题,请发表评论。
成功了!
现在确保证书始终受信任。右键单击新证书并选择获取信息。在信任部分下,将代码签名设置为始终信任。
现在我们有了一个证书,我们需要用它来签署 GDB。首先,我们将重新启动任务门控进程以确保它获取新证书。退出 Keychain Access(您必须退出 Keychain Access!)并返回终端执行这些最终命令。
找到任务门控进程。
$ ps -e | grep taskgated
56822 ?? 0:03.11 /usr/libexec/taskgated -s
60944 ttys002 0:00.00 grep --color=auto taskgated
上述输出中的第一个数字是 PID。使用它来终止进程(它会立即自行重启)。
$ sudo kill -9 56822
现在您终于可以对 GDB 进行代码签名了。
# If installed through MacPorts
$ codesign -s gdb-cert $(which gdb-apple)
# If installed through Homebrew
$ codesign -s gdb-cert $(which gdb)
# For the settings posted by OP
$ codesign -s gdb-cert /usr/local/Cellar/gdb/7.11/bin/gdb
现在你应该准备好了! OS X 钥匙串可能会在您第一次尝试调试程序时询问您的密码,但它应该可以工作!
/* 附录:为了让我能够拥有完整的功能,我必须重新启动机器。 */