gdb os x sierra 10.12.3无法正常工作

时间:2017-02-18 21:27:37

标签: c++ macos debugging gdb macos-sierra

问题已为人所知,gdb不再适用于OS X Sierra。

这真的很烦人,因为我已经研究了解决方案,并且有一些解决方案,但他们显然已经不再工作了。我试图使用.gdbinit文件解决方案和禁用csrutil解决方案,两者都不起作用。

所以我的问题是:有谁知道如何在10.12.3中修复它?

非常感谢!

4 个答案:

答案 0 :(得分:3)

看起来仍然没有解决方案。我不认为“使用LLDB而不是GDB”是最终的解决方案。所以我继续构建了一个相当基本的docker容器,其中包含了非常基础的东西(g ++和gdb)。

以下是Docker Hub container,Dockerfile位于此Github repo

此解决方案至少允许您通过几个简单的命令在Mac上使用GDB。由于您正在编码的文件夹已安装,因此只要您点击“保存”,所有更改都会自动显示。

希望这有助于其他人。

答案 1 :(得分:1)

非常感谢Basile Starynkevitch,他刚刚给了我更新gdb的想法

解决方案:

您只需更新 gdb以获取最新版本(目前为7.12.1)。假设你已经安装了Homebrew:

这就是我所做的:

brew update 
brew remove gdb
brew install gdb

现已更新至最新版本。

现在再次使用您之前使用的证书对gdb进行编码。

sudo killall taskgated
codesign -fs gdb-certi /usr/local/bin/gdb 
launchctl load /System/Library/LaunchDaemons/com.apple.taskgated.plist

最后一步仍然是使用变通方法来创建.gdbinit文件:

nano ~/.gdbinit 

- > set startup-with-shell off

调试现在适用于我:)( OS X Sierra 10.12.3 - gdb 7.12.1 )。

<强>更新

显然它会解决某些问题,但不会解决整个问题本身。它仍然会导致错误。老实说,我的解决方案:当你可以:切换到LLDB和另一个IDE (Netbeans不支持LLDB)。或者使用Linux。我目前在我的MacBook Pro上使用Ubuntu棒。

答案 2 :(得分:0)

没有GDB 7.11或7.12.1不适用于Sierra 10.12.4简而言之,因为Apple安全升级。当某些新版本出现时,我们需要等待重新启用。

Easy WA现在使用LLDB作为调试器。示例说明here

另一条LLDB指令here

答案 3 :(得分:-1)

我发现gdb 7.12.1对我来说也不起作用。我认为它不包括2016年11月9日对gdb的重要提交82b19a4d2f9c9e8d56f。 然而,我能够让gdb 8.0开发分支工作。

下载,例如

git clone --depth 1 --branch gdb-8.0-branch git://sourceware.org/git/binutils-gdb.git

然后进入签出目录

cd binutils-gdb

我有macports所以(a)想链接到macports库,(b)想避免把东西放在/ usr / local这样配置

./configure prefix=$HOME LDFLAGS="-L/opt/local/lib" CPPFLAGS="-I/opt/local/include"


make -j8

make install

=&GT;将gdb可执行文件放入〜/ bin; (静态)库到〜/ lib;文档到〜/ share

然后按照André的提示进行代码签名;虽然它现在会 codesign -fs gdb-certi~ / bin / gdb