讓mingw gdb支持STL,並自動load .gdbinit


環境要求:python (2.7版本可以,3.x沒測過),mingw官方版(你可能已經有了),gdb2013-02-04(到這里https://code.google.com/p/qp-gcc/downloads/list下載,如果有更新版本,應該也可以,目前2013-02-04是最新版)

 

推薦的GDB支持STL的方式是用python script。據說各方面都比那個stl-views-1.0.3.gdb要好(關於這個,可以參考http://blog.csdn.net/someonea/article/details/2979369

 

目前mingw官方的GDB是7.6.1,不支持python script。檢查其是否支持python腳本的方法是:在gdb終端輸入:

python print sys.version
如果打印出版本號,就OK,否則,會說該版本gdb不支持
 

https://code.google.com/p/qp-gcc/downloads/list  這個鏈接里的GDB是支持python的,你可以下載下來,加到PATH環境變量中的最前端,這樣以后從cmd啟動就會默認用這個gdb(因為貌似系統讀PATH變量是從左向右讀的,找到第一個就結束)

然后在終端運行gdb,輸入python print sys.version來驗證一下

 

然后把下面這段代碼保存到pp.gdb里(理論上,任何目錄都可以,但是推薦放在個人目錄下,如C:\Users\your_username,或者工作目錄下,兩個地方都放一份也OK)

python
import sys
sys.path.insert(0, 'c:/MinGW/share/gcc-4.7.2/python/libstdcxx/v6')
from printers import register_libstdcxx_printers
register_libstdcxx_printers (None)
end

注意,上面的目錄要根據你實際情況來改,比如,我的是

sys.path.insert(0, 'D:/MinGW/share/gcc-4.8.1/python/libstdcxx/v6')

 

然后,當你啟動gdb之后,可以在gdb終端輸入source pp.gdb(如果放在個人目錄,可能要加上目錄前綴),就會加載這里的設置,就可以看STL的內容了

 

但是,每次啟動都輸入一次這個命令還是有點麻煩,我們可以把這句命令放到.gdbinit里,讓gdb啟動時自動加載

我發現把.gdbinit放到當前工作目錄、gdb.exe所在目錄都不行,一個可行的方法是:

把.gdbinit放到個人目錄,如C:\Users\your_username,把pp.gdb放到相同目錄,.gdbinit的內容就是source pp.gdb

然后把windows的環境變量HOME設置為C:\Users\your_username(在我的電腦上,這個環境變量原來是不存在的,你的可能也是如此)

 

這樣就可以了,以后啟動gdb時,就會自動加載.gdbinit,也就自動可以用python腳本來打印STL的內容了,使用方法和打印普通變量相同,就是p variable_name

 

參考:

http://wiki.codeblocks.org/index.php?title=Pretty_Printers

https://sourceware.org/gdb/wiki/STLSupport

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM