如何在Mac OSX El Capitan中安装gdb(调试器)?我已经尝试过安装gdb但是失败了几次。
我关注此网址:http://ntraft.com/installing-gdb-on-os-x-mavericks/,MAC不允许安装MacPorts。
在这方面,有谁可以帮助我。
答案 0 :(得分:28)
首先安装Homebrew:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
然后运行:brew install gdb
答案 1 :(得分:27)
请注意,此答案是为Mac OS El Capitan编写的。对于较新版本,请注意它可能不再适用。特别是,遗留选项很可能已被弃用。
这个问题有两个解决方案,在这个问题的其他答案和How to get gdb to work using macports under OSX 10.11 El Capitan?中都提到了它们,但是为了澄清一些混乱,这是我的总结(作为答案,因为它有点长评论):
哪种替代方案更安全我想可以归结为1)信任自签名证书和2)为用户提供更多权限之间的选择。
如果使用签名备选方案,则不需要禁用SIP以将-p选项添加到taskgated
。
但,请注意,使用此替代方法,调试仅适用于 _developer
组中的用户。
使用codesign使用名为gdb-cert
的证书进行签名:
codesign -s gdb-cert /opt/local/bin/ggdb
(使用MacPorts标准路径,根据需要采用)
有关详细的代码签名配方(包括证书创建),请参阅: https://gcc.gnu.org/onlinedocs/gcc-4.8.1/gnat_ugn_unw/Codesigning-the-Debugger.html或 https://sourceware.org/gdb/wiki/BuildingOnDarwin
请注意,需要在流程期间和之后重新启动钥匙串应用程序和任务门控服务(最简单的方法是重新启动)。
根据@ user14241的回答,禁用SIP并将-p选项添加到taskgated
是一个选项。请注意,如果使用此选项,则不需要对二进制文件进行签名,并且它还会绕过用于作为开发人员工具组(_developer
)成员进行身份验证的对话框。
在将-p选项(允许组procmod和procview)添加到taskgated后,您还需要添加应该允许将gdb用于procmod组的用户。
食谱是:
在恢复模式下重启,打开终端并运行csrutil disable
重启机器并编辑/System/Library/LaunchDaemons/com.apple.taskgated.plist
,添加
-p
opion:
<array>
<string>/usr/libexec/taskgated</string>
<string>-sp</string>
</array>
在恢复模式下重启以重新启用SIP(csrutil enable
)
重新启动计算机并将用户USERNAME
添加到组procmod
:
sudo dseditgroup -o edit -a USERNAME -t user procmod
不涉及将用户添加到群组的替代 是制作可执行文件setgid procmod ,因为这也会使{{1}执行setgid二进制文件的任何用户的有效组ID(在https://apple.stackexchange.com/a/112132中建议)
procmod
答案 2 :(得分:12)
这并不一定能解决问题,但如果您使用的是Mac OS X,则可以使用lldb
LLDB Homepage。它与gdb
非常相似,甚至还提供了使用gdb
上使用的命令的指南。
答案 3 :(得分:11)
这篇博客文章解释得非常好:
http://panks.me/posts/2013/11/install-gdb-on-os-x-mavericks-from-source/
我开始工作的方式:
通过 KeyChain Access 创建编码签名证书:
1.1从菜单中选择 KeyChain Access&gt;证书助理&gt;创建证书......
1.2按照向导创建证书,我们将其命名为gdb.cert
,身份类型为自签名根,证书类型为代码签名并选择让我覆盖默认值。
1.3在“继续”上单击几次,直到转到指定证书位置,然后将钥匙串设置为系统。< / p>
通过Homebrew安装gdb:brew install gdb
重新启动taskgated
:sudo killall taskgated && exit
重新打开终端窗口并输入sudo codesign -vfs gdb.cert /usr/local/bin/gdb
答案 4 :(得分:8)
在我的Mac OS X El Capitan上,我使用自制软件来安装gdb:
brew install gdb
然后我按照此处的说明进行操作:https://sourceware.org/gdb/wiki/BuildingOnDarwin,在 2.1部分中。适用于Mac OS X 10.5(Leopard)及更高版本的方法。
答案 5 :(得分:2)
一旦安装了gdb
的macports版本,您就需要禁用SIP才能对/System/Library/LaunchDaemons/com.apple.taskgated.plist
进行正确的编辑。要禁用SIP,您需要在恢复模式下重新启动并执行以下命令:
csrutil disable
然后重启。然后,您需要像这样编辑com.apple.taskgated.plist
的底部:
<array>
<string>/usr/libexec/taskgated</string>
<string>-sp</string>
</array>
然后您必须重新启动才能使更改生效。然后你应该重新启用SIP。 macports install的gdb
命令实际上是ggdb
。您需要按照此处的说明对代码ggdb
进行编码:
https://gcc.gnu.org/onlinedocs/gcc-4.8.1/gnat_ugn_unw/Codesigning-the-Debugger.html
我能够让代码签名生效的唯一方法是使用ggdb
运行sudo
。祝你好运!
答案 6 :(得分:0)
似乎MacPorts现在可以安装在El Capitan: https://www.macports.org/install.php 然后你可以通过你提到的链接安装gdb。
答案 7 :(得分:0)
花了好几天试图让它在High Sierra 10.13.1上运行。无论我尝试什么,自制软件的gdb 8.1版本都无法运行。结束了通过macports安装gdb 8.0.1,这奇迹般地工作(在跳过与代码签名等相关的所有其他必要的箍之后)。
另外一个问题是,在Eclipse中,您将获得围绕所有程序参数的无关单引号,这可以通过在.gdbinit中提供参数来解决。