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

Tau*_*ohd 41 macos gdb

如何在Mac OSX El Capitan中安装gdb(调试器)?我已经尝试安装gdb但是失败了几次.

我关注此URL:http://ntraft.com/installing-gdb-on-os-x-mavericks/,MAC不允许安装MacPorts.

在这方面,有谁可以帮助我.

drR*_*rtz 28

请注意,这个答案是为Mac OS El Capitan编写的.对于较新版本,请注意它可能不再适用.特别是,遗留选项很可能已被弃用.

这个问题有两个解决方案,在这个问题的其他答案和如何在OSX 10.11 El Capitan下使用macport使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 /维基/ BuildingOnDarwin

请注意,您需要在进程期间和之后重新启动 keychain应用程序和taskgated服务(最简单的方法是重新启动).

备选方案2:使用旧版选项进行taskgated

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

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

食谱是:

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

  2. 重启机器并编辑/System/Library/LaunchDaemons/com.apple.taskgated.plist,添加-popion:

    <array>
        <string>/usr/libexec/taskgated</string>
        <string>-sp</string>
    </array>
    
    Run Code Online (Sandbox Code Playgroud)
  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 
    
    Run Code Online (Sandbox Code Playgroud)

  • 我想在这里说一下,经过大约4-5个小时的尝试趟过备选方案1(密钥签名)的无数变化而没有工作(我似乎并不孤单),我终于与备选方案2一起工作就像一个魅力.请注意,确实您必须在OSX El Capitan中禁用SIP.感谢上帝!这个问题让我非常疯狂. (2认同)
  • 是的它(现在我似乎无法将其删除..(请参阅http://stackoverflow.com/questions/35573402/remove-user-from-group-mac-os-x-el-capitan好吧,它只是失败了,我做了所有提到的,我验证了二进制文件是否正确签名,我仍然得到了同样的错误.另一个选项虽然做了这个伎俩. (2认同)

San*_*gha 28

首先安装Homebrew:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

然后运行: brew install gdb


小智 12

这并不一定能解决问题,但如果您使用的是Mac OS X,则可以使用lldb LLDB主页.它非常类似于gdb甚至提供了使用您将使用的命令的指南gdb.


rye*_*nus 12

这篇博客文章解释得非常好:

http://panks.me/posts/2013/11/install-gdb-on-os-x-mavericks-from-source/

我开始工作的方式:

  1. 通过KeyChain Access创建编码签名证书:

    1.1从菜单中,选择KeyChain Access>证书助理>创建证书...

    1.2按照向导创建证书并命名gdb.cert,身份类型为自签名根,证书类型为代码签名,然后选择让我覆盖默认值.

    1.3在"继续"上单击几次,直到进入"为证书指定位置"屏幕,然后将" 密钥链"设置为" 系统".

  2. 通过Homebrew安装gdb: brew install gdb

  3. 重启taskgated:sudo killall taskgated && exit

  4. 重新打开终端窗口并键入 sudo codesign -vfs gdb.cert /usr/local/bin/gdb


Châ*_*ĩnh 8

在我的Mac OS X El Capitan上,我使用自制软件来安装gdb:

brew install gdb
Run Code Online (Sandbox Code Playgroud)

然后我按照这里的说明进行操作:https://sourceware.org/gdb/wiki/BuildingOnDarwin,在2.1节中.Mac OS X 10.5(Leopard)及更高版本的方法.