在初次使用 gdb 時,可能會遇到這樣的錯誤:app
(gdb) run Starting program: /usr/local/bin/fabnacci Unable to find Mach task port for process-id 23330: (os/kern) failure (0x5). (please check gdb is codesigned - see taskgated(8))
這是由於 Darwin 內核在你沒有特殊權限的狀況下,不容許調試其它進程。調試某個進程,意味着你對這個進程有徹底的控制權限,因此爲了防止被惡意利用,它是默認禁止的。容許 gdb 控制其它進程最好的方法就是用系統信任的證書對它進行簽名。spa
按入下步驟建立代碼簽名的證書:調試
打開 Keychain Access 應用程序(/Applications/Utilities/Keychain Access.app)code
執行菜單 鑰匙串訪問 -> 證書助理 -> 建立證書進程
填寫以下信息:ci
名稱:gdb_codesignit
身份類型:自簽名根證書io
證書類型:代碼簽名class
鉤選:讓我覆蓋這些默認設置
登錄
一路肯定,直到指定證書位置的步驟,選擇系統
點擊「建立」,會提示用輸入系統登陸密碼,建立完成
在鑰匙串訪問程序中,選擇左側欄的系統和個人證書,找到你剛剛建立的gdb_codesign證書並雙擊打開證書信息窗口,展開信任項,設置使用此證書時:爲始終信任。
關閉證書信息窗口,系統會再次要求輸入系統登陸密碼。
執行下面的命令:
codesign -s gdb_codesign gdb
執行上面的命令時,系統會再次驗證身份。
完成後必定要重啓系統,這個很重要,不然簽名不會生效。
若是出現下面的錯誤:
MacBook:~ sam$ codesign -s gdb_codesign gdb
gdb: No such file or directory
那麼就指定 gdb 的全路徑。
最新文章請訪問:joywek.com