如何在Mac OSX El Capitan中安装gdb(调试器)?

陶希德·汗·莫赫德

如何在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)为用户提供更多特权。

备选方案1:签署二进制文件

如果使用签名替代方法,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.htmlhttps://sourceware.org/ gdb / wiki / BuildingOnDarwin

请注意,您需要在该过程期间和之后重新启动钥匙串应用程序和任务化服务(最简单的方法是重新启动)。

备选方案2:将legacy选项用于任务化

根据@ user14241的回答,禁用SIP并添加-p选项taskgated是一个选项。请注意,如果使用此选项,则不需要对二进制文件进行签名,它还会绕过对话框进行身份验证,以作为Developer Tools组(_developer的成员进行身份验证

将-p选项(允许将procmod和procview组)添加到taskgated之后,还需要将应允许使用gdb的用户添加到procmod组

配方是:

  1. 以恢复模式重启,打开终端并运行 csrutil disable

  2. 重新启动机器并编辑/System/Library/LaunchDaemons/com.apple.taskgated.plist,添加-p选项:

    <array>
        <string>/usr/libexec/taskgated</string>
        <string>-sp</string>
    </array>
    
  3. 在恢复模式下重新启动以重新启用SIP(csrutil enable

  4. 重新启动计算机并将用户添加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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章