1. 程式人生 > >Mac上gdb啟用pretty printers(STL格式美化)

Mac上gdb啟用pretty printers(STL格式美化)

0.背景

gdb原生態對於STL的輸出不太直觀,為了可以直觀的檢視STL的值,我們進行相關的配置。

1.方式概覽

提一下第二種方式,在大型專案中通常我們的容器也會巢狀別的容器,這種情況下第二種方式就比較弱了,不能很好的展示。

2.使用方式

使用下列命令下載python指令碼(需要安裝svn),這個指令碼在gdb高版本應該是自帶的,不過這裡我們統一下載下。最好放到一個容易辨識的資料夾裡,這裡取名字stl_pretty_printer。

# 需要安裝svn,預設mac是自帶的,如果沒有使用下列命令安裝
brew install svn
# 建立stl_pretty_printer目錄
mkdir stl_pretty_printer
# 進入
cd stl_pretty_printer
# 下載指令碼
svn co svn://gcc.gnu.org/svn/gcc/trunk/libstdc++-v3/python

.gbdinit是gdb的配置檔案,在啟動的時候載入,我們需要將以下內容複製到其中。

python
import sys
sys.path.insert(0, '/xxx/xxx/stl_pretty_printer/python')
from libstdcxx.v6.printers import register_libstdcxx_printers
register_libstdcxx_printers (None)
end

重新啟動gdb即可。

如果執行了以上操作發現不起作用,或者在啟動gdb時候提示“不支援python的指令碼”,需要檢查在安裝gdb時候是否啟用了python支援。

./configure --with-python

如果在make的時候提示Python missing or unusable error while cross compiling GDB,請切換到系統預設python或者安裝python-dev。

3.補充

為了格式更加美觀可以加上:

set print pretty on

如果出現During startup program terminated with signal ?, Unknown signal這個錯誤,這個是因為mac系統的問題。加上:

set startup-with-shell off

Reference