mac下开始gdb调试报错

mac下开始gdb调试报错,第1张

解决问题的代价比较低的方链渗法:加上sudo,即sudo gdb executableFileName。

找到的一个解决方法:创建~/.gdbinit文哪宽件,并向该文件插入set startup-with-shell off语句。详细命令为

需要注意是在当前目录下,还是在根目录下

[1] mac下gdb调试遇到的问题

[2] mac下创建gdb调试的keychain

[3] mac下sudo不需要输入棚缓脊密码

【安装方法】

1、GDB作为一个强大的c/c++调试工具,一直茄塌是程序猿的良好伴侣,但转到Mac os才发现竟然没有默认安装,所幸还有强大的homebrew工具:brew install homebrew/dupes/gdb

然后就是漫长的等待+编译安装时间了,安装完成后敲击gdb能打印出版本信息,说明已经正确安装了

2、生成证书这是由于Mac os的安全机制阻止了gdb对要调试的程序进行完全控制,对此要对gdb赋予合适的权限,首先要在keychain access里面添加相应的keychain (钥悄镇匙串)。

3、选择"always trust"刚生成的证书,这样就不用每次在运行gdb的时候手工输入管理员密码了

4、对gdb进行证书签名。

5、打开activity monitor, 在cpu一栏的搜索框中输入‘taskgated’,然后双击进程所在行,点选‘颤运圆quit’,这是会发现taskgated进程消失了(好无辜的一个进程:( )。现在就可以对gdb进行签名了:codesign -s gdb-cert /usr/local/bin/gdb

【查看版本】

rpm -q gdb 或 gdb --version

1. 安装gdb

GDB作为一个强大的c/c++调试工具,一直是程序猿们的良好伴侣,但转到Mac os才发现竟然没有默认安装,所幸还有强大的homebrew工具:

brew install homebrew/dupes/gdb

然后就是漫长的等待+编译安装时间了,安装完成后敲击gdb能打印出版本信息,说明已经正确安装了:

Screen Shot 2014-11-24 at 01.04.15

如果现在就使用gdb进行程序调试的话会发现,根本行不通:

Screen Shot 2014-11-24 at 01.08.24

2. 生成证书

这是由于Mac os的安全机制阻止了我们的gdb对要调试的程序进行完全控制,对此桐隐我们要对gdb赋予合适的权限,首先我们要在keychain access里面添加相应的keychain (钥匙串):

create-cert-menu1

然后在下面的输入框中输入证书的名字及类型等:

create-cert-1

指定有效期:

create-cert-2

一路"continue",知道出现为我们键轮液的证书选择位置(Specify a Location for the Certificate)的时候注意:这里选"system"(如果这里无法选择system,选login也是可以的,只稿物不过再生成相应证书后需要手动导出证书,然后再手工把gdb-cert导入到System中去):

create-cert-3

好了,“create”之后我们的证书就生成成功啦d

create-cert-4

接下来,我们选择"always trust"我们刚生成的证书,这样就不用每次在运行gdb的时候手工输入管理员密码了:

cert-get-info cert-always-trust

3. 对gdb进行证书签名

完成上述步骤以后就可以退出keychain access了,但仅仅这样还是不够的,要对gdb进行签名,我们还需要杀死一个特殊的进程:

Screen Shot 2014-11-24 at 01.33.49

打开activity monitor, 在cpu一栏的搜索框中输入‘taskgated’,然后双击进程所在行,点选‘quit’,这是你会发现taskgated进程消失了(好无辜的一个进程:( )。现在就可以对gdb进行签名了:

codesign -s gdb-cert /usr/local/bin/gdb

其中‘/usr/local/bin/gdb’是gdb在我的电脑中所在的位置(其实它是'/usr/local/Cellar/gdb/7.8.1/bin/gdb'的一个软链接),此命令正常执行无任何输出。

注:如果某天想要取消对gdb的证书签名,可以使用‘codesign --remove-signature /usr/local/bin/gdb’来完成,前提是你的gdb-cert签名还在哦。

好了现在可以使用gdb进行调试了么,且慢!

把taskgated进程再杀死一次先(是的,顽强的taskgated在后台刚刚重新启动又要被我们给杀死了:( )

至此,才算是功德圆满,赶紧用gdb试着运行下我们的程序吧:


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12566586.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存