Mac C ++ / Mars eclipse gdb调试在启动测试中挂起96%

时间:2016-06-23 05:16:13

标签: c++ eclipse macos debugging

当我尝试在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%的问题相同,但在那里从未解决过。

1 个答案:

答案 0 :(得分:6)

您必须签署gdb才能控制另一个进程的执行。这是ElCapitan中存在的安全结构的一部分(自小牛队以来一直如此)。

您可以按照以下说明执行此操作(摘自博文http://ntraft.com/installing-gdb-on-os-x-mavericks/,其中包含有关该主题的更多信息)。

认证GDB

打开Keychain Access应用程序(/ Applications / Utilities / Keychain Access.app)。通过菜单导航到Keychain Access>证书助理>创建证书......

Create certificate menu entry description

输入证书的名称。对于这个方法,我将其称为" gdb-cert"。完全按照下图所示设置字段。

Create certificate step 1

最长有效期为999天。我真的不想再次处理这个问题了,所以我要最大限度地解决这个问题。 / *附录:这意味着你必须在999天内再次这样做,即2。7年。您可能想要为此页面添加书签。 * /

Create certificate step 2

继续点击"继续"按钮,直到系统要求您提供位置。将其设置为" System"。如果您无法将其保存到系统钥匙串,请将其保存到登录钥匙串。您可以稍后导出证书,然后将其导入系统密钥链。我没有必要这样做,所以如果你有任何问题请评论。

Create certificate step 3

成功!

Create certificate step 4

现在确保证书始终受信任。右键单击新证书,然后选择“获取信息”。在Trust部分下,将Code Signing设置为Always Trust。

Certificate Get info Always trust for code signing

现在我们有了证书,我们需要使用它来签署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可能会在您第一次尝试调试程序时询问您的密码,但它应该可以正常工作!

/ *附录:为了能够拥有全部功能,我必须重启机器。 * /