Mac OS X 使用gdb

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/cairo123/article/details/52054280

导语

GDB是UNIX及UNIX-like下的一款终端代码调试工具,虽说现在代码开发使用各种IDE,但是有些情况下,使用GDB还是非常给力的。在Linux、Unix下,GDB是系统自带的,使用起来很方便,但本人做为一名iOS开发人员,使用的是Mac系统,今天突然想在Mac上使用GDB,发现在OS X上要想使用GDB,却没有那么容易,出现一点点问题,查找GDB官方的解决方案之后,顺利解决问题,并记录在此。

1、GDB的安装

OS X安装GDB,我们可以直接使用HomeBrew或者Mac Ports来安装,很简单,关于HomeBrew或Mac Ports,百毒一下,你就知道。在此我就不多赘述。这里我就使用Mac Ports安装,在安装之前可以使用search命令来查找有没有GDB,代码如下:

sudo port search gdb

如下图所示,如我们所愿,确实找到了GDB,我们即可以使用以下命令安装GDB。

sudo port install gdb

查找GDB
Mac Ports的默认安装路径是/opt/local,所以GDB对应的命令路径是/opt/local/bin/ggdb,我们可以在~/.bash_profile下配置一下环境变量,把GDB所在的路径加入进去,配置如图所示:
配置环境变量
配置成功之后使用如下命令使配置生效

source ~/.bash_profile

在配置中,我们还使用了alias命令,使用gdb做为ggdb的别名:

alias gdb='ggdb';

至此GDB的安装和配置已经完成。

2、GDB使用中的问题

GDB的使用同样可以在百度上找到详细的教程,在这里我主要说明一下Mac OS X下使用GDB碰到的问题。

当你兴高采烈安装并打算使用GDB的时候,你会发现在执行Run的时候,会出现如下提示:
GDB使用中碰到的问题
这个问题是由于Mac OS X在使用gdb的时候必须要签名,而且我们安装的GDB是没有签名的,所以才会出现这个问题。

3、签名证书的建立

要解决这个问题,我们第一步就是要创建一个签名证书,怎么创建呢?在Mac OS X中有个『钥匙串』应用,选择『证书助理』-『创建证书』,创建一个签名证书,如图:
创建证书菜单
在这里,我们填入自己想要的名称,在这里我就使用gdb-cert,然后在『身份类型』中选择『自签名根证书』,在『证书类型』中选择『代码签名』,并勾选『让我覆盖这些默认值』。如图所示:
创建证书
接下来,我们可以一直点击继续,直到最后一步,在『请指定钥匙串以便储存证书』选项中,一定要选择『系统』,不可选择『登陆』。然后点击创建证书,即可,如图:
创建证书
点击完成之后,我们就成功创建证书了,并可以在『钥匙串』-『系统』-『我的证书』下看到我们创建的证书。

4、信任签名证书

证书创建之后,我们需要将证书设置为始终信任,在我们创建的签名证书上,点击右键,选择『显示简介』,展开『信任』节点,在『使用此证书时』选项下,选择『始终信任』,如图所示:
信任证书
信任之后,可以在钥匙串中看到,证书图标下有个小+号,在信息中可以看到『此证书已标记为受所有用户信任』。至此,关于证书的部分就已经全部结束。

5、GDB签名

证书创建完成之后,我们使用如下命令,给GDB签名,

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

如果没有任何输出,则表示签名成功。至此,就可以正常使用GDB了。

6、结束

最后,如果用户还是无法使用GDB,还是出现这个问题的话,请先使用如下命令查看,是否签名是否成功:

codesign -v /opt/local/bin/ggdb

如果没有任何输出,则表示签名已经成功,请确认是否以下部分操作存在问题:
1、签名证书是否在『系统』结点下
2、签名证书是否已经标记为『始终信任』

如果还是不行的话,请重启taskgated,先使用ps命令查看该进程的PID,命令如下所示:

ps -e | grep task

然后使用kill -9 PID杀死该进程,若操作都已经成功的话,则可尝试修改GDB所在的用户组和权限,命令如下:

sudo chmod 755 gdb
sudo chgrp admin gdb

至此,关于在Mac OS X上使用GDB遇到的签名问题就已经全部结束,可在Mac OS X上正常使用GDB。若依然无法使用,请尝试重启Mac,并确认以上操作是否正确。

没有更多推荐了,返回首页