项目场景:
提示:这里简述项目相关背景:
mac系统安装GDB
—我遇到的问题
问题描述
提示:这里描述项目中遇到的问题:
已经显示GDB安装成功,但是在调试的过程中出现以下错误提示:
Unable to find Mach task port for process-id 1348: (os/kern) failure (0x5).
(please check gdb is codesigned - see taskgated(8))
原因分析:
提示:这里填写问题的分析:
这是mac系统的一种保护设置,Darwin kernel出于安全考虑,在没有特殊授权的情况下不允许gdb调试任何程序。要解决这个问题需要给gdb授予系统完全信任的代码签名权利。实现这个过程的步骤已经非常多教程了。
我现在的问题是,已经完成了安装、也进行了签名,但是在调试的过程中依然出现上面的错误提示。经过资料查询。分析造成该错误的原因有:
(1)签名不成功
(2)签名未生效;
(3)虽然已经授权,但是权限不够:
针对以上问题的解决方案:
提示:这里填写该问题的具体解决方案:
问题(1):重新签名;
问题(2):签名后需要重启程序使得签名生效;
命令:sudo killall taskgated 。
如果重启程序仍然无效,就需要重启计算机
命令:sudo reboot;
问题(3):把源代码:gdb test,换成:sudo gdb test。
查看gdb的绝对路径
$ which gdb
/usr/local/bin/gdb
对gdb进行签名证书授权命令:
codesign -fs gdb-cert which gdb
对gdb进行签名证书取消授权命令:
codesign – remove- signature /usr/local/bin/gdb
设置gdb启动选项命令
set startup-with-shell off