前言
系統(tǒng):Ubuntu 16.4(WSL)
正常都不會需要升級 GDB 的,但如果是對新標準、新特性洞难、新語言有要求的話,那就需要升級 GDB 了揭朝。
這次升級 GDB 是為了能夠調試 Rust 程序队贱,因為 Windows 下提供 GDB 太老了,而也明確不支持 Rust調試潭袱。
最新的 gdb 是 8.2柱嫌,不過太新怕有 bug,我們上 gdb-8.1屯换。
下載
下載到 D 盤:
eor@DESKTOP-CNB2LNA:/mnt/c/Users/admin$ cd /mnt/d/inbox/
eor@DESKTOP-CNB2LNA:/mnt/d/inbox$ wget http://ftp.gnu.org/gnu/gdb/gdb-8.1.1.tar.gz .
配置编丘、編譯、安裝
如果不需要用到 Python 調試腳本,可以跳過 python-dev 和去除 -with-python=python3 的標志嘉抓,因為這可能會導致失敗索守。
帶上 python 的開發(fā)環(huán)境,這是為了調試 Rust 而裝的抑片。
第一個是 python2 的蕾盯,第二個是 python3 的,按需安裝:
sudo apt-get install python-dev
sudo apt-get install python3-dev
sudo apt-get install texinfo # 這個必備
解壓蓝丙、配置级遭、編譯、安裝
eor@DESKTOP-CNB2LNA:/mnt/d/inbox$ tar zxfv gdb-8.1.1.tar.gz
eor@DESKTOP-CNB2LNA:/mnt/d/inbox$ cd gdb-8.1.1/
eor@DESKTOP-CNB2LNA:/mnt/d/inbox/gdb-8.1.1$ ./configure -prefix=/usr/local/gdb -with-python=python3 && make && sudo make install
eor@DESKTOP-CNB2LNA:/mnt/d/inbox/gdb-8.1.1$ make clean
-with-python=python3 這個選項很重要渺尘,因為我們要加載 Rust 自帶的打印支持挫鸽,這能讓 GDB 更好的顯示 Rust 程序信息。而 Rust 提供的打印支持是 Python 版本的鸥跟,所以我們需要帶上 Python丢郊。
注意,這里的 python3 是已經安裝了的 python3医咨,請確保 python3 和 python3-dev 的存在枫匾。
我偷懶的將命令堆到一起,但不建議別人這樣做拟淮。
耐心等待干茉,可能比較久。
建立鏈接
由于安裝時我們加上了前綴 -prefix=/usr/local/gdb很泊,這將會把軟件安裝到 /usr/local/gdb 目錄下角虫,好處是卸載時只需要刪除這個文件夾就可以了。
eor@DESKTOP-CNB2LNA:/mnt/d/inbox/gdb-8.1.1$ /usr/local/gdb/bin/gdb
建立符號鏈接來方便的使用他:
sudo ln -s /usr/local/gdb/bin/gdb /usr/local/bin/
sudo ln -s /usr/local/gdb/bin/gcore /usr/local/bin/
sudo ln -s /usr/local/gdb/bin/gdbserver /usr/local/bin/
ls -al /usr/local/bin/
檢查 python 支持
在用戶的主目錄 ~ 下新建一個 .gdbinit 文件和 python 文件委造。
cd ~
touch hello.py
touch .gdbinit
hello.py 文件寫入:
import gdb
print('Hello gdb, I am python script.')
.gdbinit 文件寫入:
source ~/hello.py
出現這個說明 python 腳本導入成功了戳鹅。
參考鏈接
gdb 文檔
PythonGdbTutorial
dev-python-gdb-support
用 Python 拓展 GDB(一)