如何在mac os中安裝gdb及爲gdb進行代碼簽名

1. 安裝gdb

GDB做爲一個強大的c/c++調試工具,一直是程序猿們的良好伴侶,但轉到Mac os才發現居然沒有默認安裝,所幸還有強大的homebrew工具:c++

brew install homebrew/dupes/gdb

而後就是漫長的等待+編譯安裝時間了,安裝完成後敲擊gdb能打印出版本信息,說明已經正確安裝了:安全

Screen Shot 2014-11-24 at 01.04.15

若是如今就使用gdb進行程序調試的話會發現,根本行不通:工具

Screen Shot 2014-11-24 at 01.08.24

 

2. 生成證書

這是因爲Mac os的安全機制阻止了咱們的gdb對要調試的程序進行徹底控制,對此咱們要對gdb賦予合適的權限,首先咱們要在keychain access裏面添加相應的keychain (鑰匙串):ui

create-cert-menu1

而後在下面的輸入框中輸入證書的名字及類型等:spa

create-cert-1

指定有效期:調試

create-cert-2

一路"continue",知道出現爲咱們的證書選擇位置(Specify a Location for the Certificate)的時候注意:這裏選"system"(若是這裏沒法選擇system,選login也是能夠的,只不過再生成相應證書後須要手動導出證書,而後再手工把gdb-cert導入到System中去):code

create-cert-3

好了,「create」以後咱們的證書就生成成功啦d進程

create-cert-4

接下來,咱們選擇"always trust"咱們剛生成的證書,這樣就不用每次在運行gdb的時候手工輸入管理員密碼了:homebrew

cert-get-info cert-always-trust

 3. 對gdb進行證書籤名

完成上述步驟之後就能夠退出keychain access了,但僅僅這樣仍是不夠的,要對gdb進行簽名,咱們還須要殺死一個特殊的進程:ci

Screen Shot 2014-11-24 at 01.33.49

 

打開activity monitor, 在cpu一欄的搜索框中輸入‘taskgated’,而後雙擊進程所在行,點選‘quit’,這是你會發現taskgated進程消失了(好無辜的一個進程:( )。如今就能夠對gdb進行簽名了:

codesign -s gdb-cert /usr/local/bin/gdb

其中‘/usr/local/bin/gdb’是gdb在個人電腦中所在的位置(其實它是'/usr/local/Cellar/gdb/7.8.1/bin/gdb'的一個軟連接),此命令正常執行無任何輸出。

注:若是某天想要取消對gdb的證書籤名,可使用‘codesign --remove-signature /usr/local/bin/gdb’來完成,前提是你的gdb-cert簽名還在哦。

好了如今可使用gdb進行調試了麼,且慢!

把taskgated進程再殺死一次先(是的,頑強的taskgated在後臺剛剛從新啓動又要被咱們給殺死了:( )

至此,纔算是功德圓滿,趕忙用gdb試着運行下咱們的程序吧:

Screen Shot 2014-11-24 at 01.43.55

4. 參考連接:

https://sourceware.org/gdb/wiki/BuildingOnDarwin

http://ntraft.com/installing-gdb-on-os-x-mavericks/

相關文章
相關標籤/搜索