1. 程式人生 > >解決codeblocks除錯vector、map等STL容器不能檢視元素問題(windows)(小白方案)

解決codeblocks除錯vector、map等STL容器不能檢視元素問題(windows)(小白方案)

一、Codeblocks除錯STL的問題:

C::B是一個非常不錯的整合開發環境,但是C::B對STL的除錯支援很差,其實這並不是Codeblocks的問題,而是GDB本身對STL的支援太差。例如這樣


但是我們想要的是下面這樣的


那麼接下來就是要做這件事了。

二、準備

1.首先看一下你的gdb是不是支援 python,測試方法,開啟gdb程式(如果安裝的是自帶mingw的codeblocks,那麼在安裝目錄下\CodeBlocks\MinGW\bin\gdb.exe,例如我的是 D:\CodeBlocks\MinGW\bin\gdb.exe,執行它,輸入

python print sys.version

如果不支援,會如下圖所示,提示這個版本gdb不支援python指令碼:Python scripting is not supported in this copy of GDB.

如果支援,會顯示一個版本號,比如這個7.9.1的就支援


2. 我下載的是 codeblocks 17.12,自帶的gdb是7.6.1版本的,也就是上面那個不支援的,然後換成了TDM-GCC裡面的偵錯程式,也就是上面那個7.9.1版本的。我安裝的是32位的,上面那個連結也是32位的,當然也可以裝64位的。

所以在我的 D:\TDM-GCC-32\bin下有一個 gdb32.exe 程式

三、主要步驟

1. 在D:\TDM-GCC-32\bin\下新建一個文字檔案,貼上如下程式碼

python
import sys
sys.path.insert(0, 'D:\TDM-GCC-32\share\gcc-5.1.0\python\libstdcxx\v6')
from printers import register_libstdcxx_printers
register_libstdcxx_printers (None)
end

注意把上面目錄部分換成自己目錄,就是有 某某.py檔案的目錄,如圖


然後儲存,改名為 pp.gdb , 記住儲存在 D:\TDM-GCC-32\bin下。(和gdb.exe或者gdb32.exe同目錄)

2. 開啟codeblocks,設定(settings)- 偵錯程式設定(debugger settings )- default,如圖,修改

選擇偵錯程式,因為我換了,所以要修改。在偵錯程式初始化命令裡新增

source D:\TDM-GCC-32\bin\pp.gdb

3. 重啟codeblocks,試一下