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

如何在Mac OSX El Capitan中安装gdb(debugging器)? 我已经尝试安装GDB,但失败了几次。

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

任何人都可以在这方面帮助我。

有两个解决scheme的问题,他们在这个问题的其他答案都提到,并且如何让gdb在OSX 10.11下使用macports工作El Capitan? ,但是为了澄清一些困惑,这里是我的总结(作为一个答案,因为它有一点点评论):

我认为哪种scheme更安全可归结为1)信任自签名证书和2)给予用户更多特权。

备选scheme1:签署二进制文件

如果使用签名替代方法,则禁用SIP将-p选项添加到taskgated不是必需的。

但是 ,请注意,使用此替代方法, 只能对 _developer 组中的 用户进行debugging

使用codesign使用名为gdb-cert的证书进行签名:

codesign -s gdb-cert /opt/local/bin/ggdb

(使用MacPorts标准path,必要时采用)

有关详细的代码签名配方(包括创build证书),请参阅: https : //gcc.gnu.org/onlinedocs/gcc-4.8.1/gnat_ugn_unw/Codesigning-the-Debugger.html或https://sourceware.org/ GDB /维基/ BuildingOnDarwin

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

scheme2:使用遗留选项进行任务

根据@ user14241的回答,禁用SIP并向taskgated添加-p选项是一个选项。 请注意,如果使用此选项, 则不需要对二进制文件进行签名 ,并且还会绕过用于进行身份validation的对话框,以作为“开发人员工具”组( _developer )的成员进行身份validation。

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

配方是:

  1. 在恢复模式下重新启动,打开terminal并运行csrutil disable

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

     <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 

先安装自制软件:

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

然后运行这个: brew install gdb

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

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

而我得到它的工作方式:

  1. 通过KeyChain Access创build一个编码签名证书:

    1.1从菜单中selectKeyChain访问>证书助理>创build证书…

    1.2按照向导创build一个证书,我们将其命名为gdb.cert ,身份types是自签名的根 ,证书types是代码签名,然后select让我覆盖默认值。

    1.3继续点击几次,直到您到达指定证书的位置屏幕 ,然后将钥匙串设置为系统

  2. 通过Homebrew brew install gdbbrew install gdb

  3. 重新启动taskgatedsudo killall taskgated && exit

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

这不一定解决这个问题,但如果你使用的是Mac OS X,那么你可以使用lldb LLDB主页 。 它和gdb非常相似,甚至提供了一个使用gdb命令的指南。

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

 brew install gdb 

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

一旦你安装了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。 ggdb安装的gdb命令实际上是ggdb 。 您需要ggdb以下说明对ggdb进行编码:

https://gcc.gnu.org/onlinedocs/gcc-4.8.1/gnat_ugn_unw/Codesigning-the-Debugger.html

我已经能够获得代码签名的唯一方法是使用sudo运行ggdb 。 祝你好运!

现在看来,MacPorts可以安装在El Capitan: https : //www.macports.org/install.php然后你可以通过你提到的链接安装gdb。