如何在Mac OSX El Capitan中安装gdb(调试器)?我尝试安装gdb,但失败了几次。
我遵循以下URL:http : //ntraft.com/installing-gdb-on-os-x-mavericks/,MAC不允许安装MacPorts。
任何人都可以在这方面帮助我。
请注意,此答案是针对Mac OS El Capitan编写的。对于较新的版本,请注意它可能不再适用。特别是,很可能不推荐使用legacy选项。
有两种解决方案,在该问题的其他答案以及如何在OSX 10.11 El Capitan下使用macports使gdb工作时,都提到了这两种解决方案。,但是为了消除混淆,这里是我的摘要(作为回答,因为评论时间过长):
我猜哪种选择更安全,我认为可以归结为1)信任自签名证书和2)为用户提供更多特权。
如果使用签名替代方法,taskgated
则不需要禁用SIP来将-p选项添加到。
但是,请注意,使用此替代方法时,仅允许 _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 Tools组(_developer
)的成员进行身份验证。
将-p选项(允许将procmod和procview组)添加到taskgated之后,还需要将应允许使用gdb的用户添加到procmod组。
配方是:
以恢复模式重启,打开终端并运行 csrutil disable
重新启动机器并编辑/System/Library/LaunchDaemons/com.apple.taskgated.plist
,添加-p
选项:
<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,因为这也会使procmod
执行setgid二进制文件的任何用户的有效组ID都有效(建议https://apple.stackexchange.com/a/112132)。
sudo chgrp procmod /path/to/gdb
sudo chmod g+s /path/to/gdb
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句