最近又開始了我的Go語言開發(fā)之路,開發(fā)過程中想使用Gdb調(diào)試代碼,但始終因為各種報錯而導(dǎo)致Gdb調(diào)試不了,今天晚上乘著吃了一頓烤肉的干勁,決定解決這個問題。遇見的問題主要有兩個:
1. 根證書創(chuàng)建錯誤。
2. Gdb跑起來之后,會報:`During startup program terminated with signal SIGTRAP, Trace/breakpoint trap`。
根證書創(chuàng)建錯誤
MacOS系統(tǒng)是不容許沒有許可證的進程去調(diào)試其他進程,所以需要創(chuàng)建一個系統(tǒng)的根證書,創(chuàng)建就創(chuàng)建唄,網(wǎng)上一搜全都是教程,這里就啰嗦了。創(chuàng)建過程中你極大可能會遇見這么一個問題(沒遇見算你狠)
未知錯誤 -2,147,414,007
這是什么鬼東西,網(wǎng)上一搜也沒有人說明這個報錯的原因,但針對這個報錯,可以這樣解決:
在MacOSX上,lldb需要進行代碼簽名。調(diào)試和發(fā)布版本
使用名為的代碼簽名證書設(shè)置代碼簽名
lldb_codesign。
_
如果您還沒有,則需要:
- Launch / Applications / Utilities / Keychain Access.app
_
- 在Keychain Access中選擇“Keychains”中的“l(fā)ogin”鑰匙串
列表在窗口的左上角。
_
- 選擇以下菜單項:
_
鑰匙串訪問 - >證書助理 - >創(chuàng)建證書......
_
- 設(shè)置以下設(shè)置
_
Name = lldb_codesign
身份類型=自簽名根
證書類型=代碼簽名
_
- 單擊繼續(xù)
- 單擊繼續(xù)
- 單擊“完成”
- 點擊“我的證書”
- 雙擊新的lldb_codesign證書
- 調(diào)低“信任”披露三角形
_
更改:
使用此證書時:始終信任
_
- 輸入您的登錄密碼進行確認并使其受信任
_
SnowLeopard需要接下來的步驟,但可能是因為一個bug
Keychain Access如何制作證書。
_
- 選項 - 將新的lldb_codesign證書從登錄密鑰鏈拖到
主Keychain Access窗口的Keychains窗格中的System keychain
在系統(tǒng)鑰匙串中制作此證書的副本。你必須這樣做
多次授權(quán),在被問到時將其設(shè)置為“始終信任”。
- 切換到系統(tǒng)鑰匙串,然后拖動lldb_codesign的副本
在那里進入桌面。
- 切換到終端,然后運行以下命令:
_
sudo security add-trust -d -r trustRoot -p basic -p codeSign -k /Library/Keychains/System.keychain~/ Desktop / lldb_codesign.cer
_
- 右鍵單擊??“系統(tǒng)”鑰匙串中的“l(fā)ldb_codesign”證書(不是
“登錄”,但“系統(tǒng)”中的一個,并選擇“刪除”將其刪除
“系統(tǒng)”鑰匙串。
- 重啟
根證書創(chuàng)建完成之后,就可以給gdb授權(quán)了,執(zhí)行命令如下:
sudo killall taskgated
sudo codesign -fs gdb_codesign /usr/local/bin/gdb
Gdb調(diào)試報錯
準備開始使用了,我靠,發(fā)現(xiàn)還是不行,run起來之后,發(fā)現(xiàn)報錯 During startup program terminated with signal SIGTRAP, Trace/breakpoint trap
。主要是因為 gdb8.1 的問題和蘋果系統(tǒng)的SIP機制,更換版本為8.0.1就可以解決問題。更換gdb(這個過程最好掛上代理)
brew unlink gdb
brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/9ec9fb27a33698fc7636afce5c1c16787e9ce3f3/Formula/gdb.rb
brew pin gdb
還需要關(guān)閉macOS系統(tǒng)的SIP機制,步驟如下:
1、重啟計算機,按住command+R 直到logo出現(xiàn)進入恢復(fù)模式
2、進入恢復(fù)模式之后,左上角選擇Utils -> Terminate
3、輸入 csrutil disable
4、Restart
重啟計算機,gdb應(yīng)該會正常工作了。記錄備忘 ~