1. 程式人生 > >Mac上安裝GDB除錯工具,並且使用eclipse來進行除錯的環境搭建

Mac上安裝GDB除錯工具,並且使用eclipse來進行除錯的環境搭建

Mac上安裝GDB除錯工具,並且使用eclipse來進行除錯的環境搭建

背景

GDB是一款程式碼除錯工具。Mac下依舊支援,但是由於MacOS系統本身以及版本不協調等原因使用過程會遇到各種各樣的問題。本文詳細記錄了從Gdb安裝,鑰匙串配置,與eclipse結合除錯的過程。

版本

Mac版本:macOS High Sierra 10.13.6
GDB版本:8.0
(補充,關於最新版GDB8.2.1,我在安裝完了之後,進行eclipse除錯,eclipse無法檢視變數的值等等,所以建議捨棄高版本,選擇合適的低版本來安裝)

GDB安裝過程

安裝前的準備工作

XCode的安裝

直接通過Apple Store來進行安裝即可,這樣就有了C/C++的gcc和g++開發環境。

brew的安裝
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

GDB安裝

最快捷的方法是使用brew來安裝,命令如下。

brew install gdb

但是這種方式預設安裝的是最新版的GDB,版本號為8.2.1。在上面也提到過,最新版實際用起來有諸多問題,所以我們選擇另外一種方式來安裝。筆者建議安裝8.0版本,經測試無使用問題。

點選這個連結下載8.0原始碼的安裝包 http://ftp.gnu.org/gnu/gdb/gdb-8.0.tar.gz 然後解壓。進入解壓後的目錄,依次執行如下命令。

# 配置
./configure

# 編譯
make -j4

# 安裝
make install

# 檢視gdb版本
gdb -v

此命令執行完後,一切順利的話,看到的版本就應該是GDB8.0版本。

解除安裝該版本的GDB可以通過進入解壓後的目錄,執行如下命令來實現。

make uninstall

建立證書及簽名

如果這時候直接除錯程式會遇到如下錯誤。

(gdb) run
Starting program: /usr/local/hello
Unable to find Mach task port for process-id 528: (os/kern) failure (0x5).
 (please check gdb is codesigned - see taskgated(8))

這是因為Darwin 核心在你沒有特殊許可權的情況下,不允許除錯其他程序。除錯某個程序,意味著對這個程序有完全的控制權限。所以出於安全考慮預設是禁止的。所以允許gdb控制其它程序最好的方法就是用系統信任的證書對它進行簽名。

建立證書

1、command+空格鍵,輸入鑰匙串訪問。
2、選單上點選鑰匙串訪問->證書助理->建立證書
3、填寫如下資訊
名稱:gdb-cert
身份型別:自簽名根證書
證書型別:程式碼簽名
勾選:讓我覆蓋這些預設設定
然後一直點繼續,直到出現直到出現“指定證書位置, 選擇 登入/系統 ,選擇 系統,之後繼續,然後最後輸入密碼即可。

(補充,如果建立系統證書未成功,建議先建立登入證書,然後通過鑰匙串訪問的選單欄—檔案—匯出專案,將證書匯出到桌面,然後選擇系統,將證書匯入即可,期間涉及到輸入密碼問題,直接輸入自己的密碼即可。)

建立好證書之後,雙擊該證書,選擇信任,然後選擇始終信任,輸入密碼,然後退出鑰匙串訪問。

簽名

Terminal中執行下列命令

#檢視gdb的路徑
which gdb

#進行簽名
codesign -s gdb-cert 上一條命令的輸出

#比如:我的就是這樣 codesign -s gdb-cert /usr/local/bin/gdb
重啟電腦

重啟電腦使證書生效

eclipse中使用GDB

開啟eclipse之後,選擇Eclipse---->Preferences---->搜尋欄輸入gdb
在GDB debugger中填入 which gdb的輸出
在GDB command file 中填入 ~/.gdbinit(該檔案在安裝8.0版本時候會自動建立)

至此,大功告成,你就可以開開心心的在Mac上使用eclipse進行C/C++程式碼的除錯了。