文章轉自: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 : (os/kern) failure ().
(please check gdb is codesigned - see taskgated())
原因是出于對程序安全的考慮,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