0.1 背景
Gdb是一款代碼調試工具。Mac下依舊支持,但是由於MacOS系統本身以及版本不協調等原因使用過程會遇到各種各樣的問題。本文詳細記錄了從Gdb安裝,鑰匙串配置,與VScode結合調試的過程。
0.2 版本
Mac版本:macOS High Sierra 10.13.6
Gdb版本:8.0
1 Gdb安裝
最快捷的方法是使用brew來安裝,命令如下。
brew install gdb
目前(2018.11.2)brew install 默認會安裝8.2版本,但是在後續使用的過程遇到了一些問題(Mac high Sierra和gdb8.0以上的版本有很多地方不兼容,強烈不建議使用),所以不建議使用這個版本。筆者建議使用8.0的版本,8.0安裝如下方式。
點擊這個鏈接下載8.0源碼的安裝包 http://ftp.gnu.org/gnu/gdb/gdb-8.0.tar.gz 然後解壓。進入解壓後的目錄,依次執行如下命令。
# 配置
./configure
# 編譯
make -j4
# 安裝
make install
# 查看gdb版本
gdb -v
一切順利的話可以看到gdb的版本爲8.0。
2 配置調試權限
如果這時候直接調試程序會遇到如下錯誤。
(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控制其它進程最好的方法就是用系統信任的證書對它進行簽名。
2.1 創建證書
- command+空格鍵,輸入鑰匙串訪問。
- 菜單上點擊鑰匙串訪問->證書助理->創見證書
- 填寫如下信息
- 名稱:gdb_codesign
- 身份類型:自簽名根證書
- 證書類型:代碼簽名
- 勾選:讓我覆蓋這些默認設置
- 之後一直next,直到出現“指定證書位置”,選擇系統,然後完成。
- 之後在左側邊欄上邊選擇“系統”,下邊選擇“我的證書”可以看到創建的證書,然後雙擊。展開“信任”這一項,選擇“始終信任”。
- 關掉窗口,此時需要驗證密碼。
如果在最後一步選擇了“系統”,但是完成後提示“未知錯誤=-2xxxxxxxx”,可以先以登錄的方式創建證書。然後在登錄欄中找到,拖到桌面上,然後再拖回系統欄中。其他操作相同。
2.2 對gdb簽名
Terminal中執行下列命令
# 如果提示找不到gdb則指定gdb的全路徑
codesign -s gdb_codesign gdb
2.3 重啓
否則簽名不會生效。
3 vscode中使用gdb
gdb很強大,但是與vscode良好的可視化界面配合會更好。
- 官網下載vscode:https://code.visualstudio.com/download
- 安裝相關插件:C/C++ Clang,C++ Intellisense,C/C++
- 配置launch.json,當中配置成gdb即可。
Reference
1.解決GDB在Mac下不能調試的問題:https://segmentfault.com/a/1190000004136351
2.XGBoost解析系列-準備:https://blog.csdn.net/matrix_zzl/article/details/78571349