Mac上Gdb安裝和使用的過程

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 創建證書

  1. command+空格鍵,輸入鑰匙串訪問。
  2. 菜單上點擊鑰匙串訪問->證書助理->創見證書
  3. 填寫如下信息
    • 名稱:gdb_codesign
    • 身份類型:自簽名根證書
    • 證書類型:代碼簽名
    • 勾選:讓我覆蓋這些默認設置
  4. 之後一直next,直到出現“指定證書位置”,選擇系統,然後完成。
  5. 之後在左側邊欄上邊選擇“系統”,下邊選擇“我的證書”可以看到創建的證書,然後雙擊。展開“信任”這一項,選擇“始終信任”。
  6. 關掉窗口,此時需要驗證密碼。

如果在最後一步選擇了“系統”,但是完成後提示“未知錯誤=-2xxxxxxxx”,可以先以登錄的方式創建證書。然後在登錄欄中找到,拖到桌面上,然後再拖回系統欄中。其他操作相同。

2.2 對gdb簽名

Terminal中執行下列命令

# 如果提示找不到gdb則指定gdb的全路徑
codesign -s gdb_codesign gdb

2.3 重啓

否則簽名不會生效。

3 vscode中使用gdb

gdb很強大,但是與vscode良好的可視化界面配合會更好。

  1. 官網下載vscode:https://code.visualstudio.com/download
  2. 安裝相關插件:C/C++ Clang,C++ Intellisense,C/C++
  3. 配置launch.json,當中配置成gdb即可。

Reference

1.解決GDB在Mac下不能調試的問題:https://segmentfault.com/a/1190000004136351

2.XGBoost解析系列-準備:https://blog.csdn.net/matrix_zzl/article/details/78571349

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章