问题已为人所知,gdb不再适用于OS X Sierra。
这真的很烦人,因为我已经研究了解决方案,并且有一些解决方案,但他们显然已经不再工作了。我试图使用.gdbinit文件解决方案和禁用csrutil解决方案,两者都不起作用。
所以我的问题是:有谁知道如何在10.12.3中修复它?
非常感谢!
答案 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