在Mac电脑上用Homebrew安装的gdb调试时会出现如下错误:
Unable to find Mach task port for process-id 358: (os/kern) failure (0x5).
(please check gdb is codesigned - see taskgated(8))
原因
Darwin kernel出于安全考虑,在没有特殊授权的情况下不允许gdb调试任何程序,因为可以调试就掌握了进程的控制权。不过如果是root用户就没有这个问题,不过谁愿意用root来调试程序呢。
问题
在Mac电脑上用Homebrew安装的gdb调试时会出现如下错误: Unable to find Mach task port for process-id 358: (os/kern) failure (0x5). (please check gdb is codesigned - see taskgated(8))
原因
Darwin kernel出于安全考虑,在没有特殊授权的情况下不允许gdb调试任何程序,因为可以调试就掌握了进程的控制权。不过如果是root用户就没有这个问题,不过谁愿意用root来调试程序呢。
解决
一个常用的解决方法就是给gdb授予系统完全信任的代码签名权利,以对其他进程。 首先,需要创建一个系统代码签名信任证书:
其次,将证书授予gdb,执行命令
注意,需要先退出“钥匙串访问”应用,或者重启下系统。
好了,以上就给gdb授予了系统信任的代码签名证书,可以正常使用gdb了。