文章转自:http://blog.csdn.net/sinkary/article/details/24107993
版权归原作者。
准备在mac下用gdb调试,出现:
[plain] view plain copy
Starting program: /x/y/foo
Unable to find Mach task port for process-id 28885: (os/kern) failure (0x5).
(please check gdb is codesigned - see taskgated(8))
原因是出于对进程安全的考虑,gdb不能随意访问其它进程,需要给它代码签名,只要将gdb加入一个代码签名证书即可。
首先要创建代码签名证书。
打开应用:Launchpad -> 其他 -> 钥匙串访问
点击 “钥匙串访问”->“证书助理”->“创建证书”
名称填 gdb-cert,证书类型选代码签名,身份类型用默认的自签名根证书,勾选“让我覆盖这些默认值”,一路继续,直到遇到“指定用于该证书的位置”,选择系统,完成。
然后,在“系统”钥匙串中找到新建的gdb-cert,双击打开属性,在信任中选择“总是信任”。
重启电脑。
然后给gdb签名:
$ which gdb
$ codesign -s gdb-cert /usr/local/bin/gdb
就可以了。
参考:
https://sourceware.org/gdb/wiki/BuildingOnDarwin
http://gcc.gnu.org/onlinedocs/gnat_ugn_unw/Codesigning-the-Debugger.html