gdb調試器調試失敗?

題主今天在mac上裝了一個gdb調試器,按照教程裝完後,使用調試命令時出現了下面的錯誤:During startup program terminated with signal SIG113, Real-time event 113。之前用@河利的方法解決了,但前幾天蘋果又出了一個更新,更新後就又出現了上面所說的問題。最近在看csapp,用不了gdb很討厭。


如果是mac os10.12.2的話,正確做法是先用brew升級gdb 然後在.gdbinit文件中添加set startup-with-shell off


設置

set startup-with-shell off

即可(方便起見可以寫到 .gdbinit 里)。


似乎是升級Mac OS sierra後都會這樣。

目前沒有解決辦法。

@河利

這個方法我也試過了,不行,gdb出現如下報錯:

warning: unhandled dyld version (15)
[Inferior 1 (process 660) exited normally]

希望可以繼續關注這個問題。


用戶文件夾下沒有.gdbinit文件,直接運行下面的命令就可以了,親測可以,在創建證書之後。

終端運行 echo "set startup-with-shell off" &>&> ~/.gdbinit


在Terminal 運行:csrutil status

System Integrity Protection status: enable.

是enable的話,那就關閉SIP試試。

1,重啟OSX系統,然後按住Command+R

2,出現界面之後,選擇Utilities menu中Terminal

3,在Terminal中輸入csrutil disable關閉SIP(csrutil enable打開SIP)

4,重啟reboot OSX

參考鏈接:

https://developer.apple.com/library/content/documentation/Security/Conceptual/System_Integrity_Protection_Guide/ConfiguringSystemIntegrityProtection/ConfiguringSystemIntegrityProtection.html


問題:剛剛升到10.12.3,發現 gdb 不能用了(其實更新了那個 Xcode 之後 ctags 啥的也都用不了了)。就是說我這個回答是針對 Sierra 10.12.3 的,其他版本請參照其他回答。

解決方法:升級 gdb 到最新的版本 7.12.1 ,這個版本的 gdb 專門對 10.12.3 系統加了一票子補丁。自己去看這個視頻教程吧,需要翻牆:http://www.youtube.com/watch?v=AoDSUadbl-M

過程大概是這樣的(其實記不太清了,建議去看那個視頻):

1.先更新 gdb :

brew update

brew unlink gdb

brew install gdb

然後你會發現這個新系統的 brew 命令居然不能用 root 許可權執行……

如果他說有一堆目錄許可權不夠,那就用sudo chown 把那些目錄的許可權全都改成 User 許可權,不會用 chown 命令的自己去谷歌。

如果裝成了最新版本的 gdb ,那麼已經完成一大半工作了。

2.另外一小半工作就是和以前一樣,創建證書,過程自己去谷歌。

證書創建完之後,和以前一樣,更新簽名(我的那個證書名叫 gdb-cert):

sudo -fs gdb-cert $(which gdb)

3.最後重啟系統。


推薦閱讀:

OS X 文本編輯等應用為何會自動轉換引號,如何解決?
Mac OS X 下有哪些輕量級的作圖工具?
為什麼蘋果在 OS X Yosemite 中把系統字體改為 Helvetica Neue?
Mac OS X 如何才能用快捷鍵鎖屏?
為什麼 Mac OS X 對內存的需求遠遠多於 Windows ?

TAG:macOS | Linux開發 | 軟體調試 | GDB |