当我尝试在Mac El Capitan(10.11.5)上的Eclipse Mars(4.5.2)中调试一个简单的c ++程序时,它会挂起"启动测试(96%)"。
我用自制软件安装了gdb。当我输入"哪个gdb"在终端,它说," / usr / local / bin / gdb"。
以下是问题和我的GDB设置的屏幕截图:http://imgur.com/a/JrMjN
这与Mac C++/Mars eclipse gdb debug launching stuck at 96%的问题相同,但在那里从未解决过。
答案 0 :(得分:6)
您必须签署gdb才能控制另一个进程的执行。这是ElCapitan中存在的安全结构的一部分(自小牛队以来一直如此)。
您可以按照以下说明执行此操作(摘自博文http://ntraft.com/installing-gdb-on-os-x-mavericks/,其中包含有关该主题的更多信息)。
打开Keychain Access应用程序(/ Applications / Utilities / Keychain Access.app)。通过菜单导航到Keychain Access>证书助理>创建证书......
输入证书的名称。对于这个方法,我将其称为" gdb-cert"。完全按照下图所示设置字段。
最长有效期为999天。我真的不想再次处理这个问题了,所以我要最大限度地解决这个问题。 / *附录:这意味着你必须在999天内再次这样做,即2。7年。您可能想要为此页面添加书签。 * /
继续点击"继续"按钮,直到系统要求您提供位置。将其设置为" System"。如果您无法将其保存到系统钥匙串,请将其保存到登录钥匙串。您可以稍后导出证书,然后将其导入系统密钥链。我没有必要这样做,所以如果你有任何问题请评论。
成功!
现在确保证书始终受信任。右键单击新证书,然后选择“获取信息”。在Trust部分下,将Code Signing设置为Always Trust。
现在我们有了证书,我们需要使用它来签署GDB。首先,我们将重新启动taskgated进程以确保它获取新证书。退出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 Keychain可能会在您第一次尝试调试程序时询问您的密码,但它应该可以正常工作!
/ *附录:为了能够拥有全部功能,我必须重启机器。 * /