解决codeblocks调试vector、map等STL容器不能查看元素问题(windows)(小白方案)

时间:2022-05-20 16:40:16

参考资料:http://wiki.codeblocks.org/index.php/Pretty_Printers

codeblocks 17.12 下载地址:https://sourceforge.net/projects/codeblocks/files/Binaries/17.12/Windows/codeblocks-17.12-setup.exe/download

TDM-GCC-5.1.0-3下载地址:https://sourceforge.net/projects/tdm-gcc/files/TDM-GCC%20Installer/tdm-gcc-5.1.0-3.exe/download


一、Codeblocks调试STL的问题:

C::B是一个非常不错的集成开发环境,但是C::B对STL的调试支持很差,其实这并不是Codeblocks的问题,而是GDB本身对STL的支持太差。例如这样

解决codeblocks调试vector、map等STL容器不能查看元素问题(windows)(小白方案)

但是我们想要的是下面这样的

解决codeblocks调试vector、map等STL容器不能查看元素问题(windows)(小白方案)

那么接下来就是要做这件事了。

二、准备

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.

解决codeblocks调试vector、map等STL容器不能查看元素问题(windows)(小白方案)

如果支持,会显示一个版本号,比如这个7.9.1的就支持

解决codeblocks调试vector、map等STL容器不能查看元素问题(windows)(小白方案)

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文件的目录,如图

解决codeblocks调试vector、map等STL容器不能查看元素问题(windows)(小白方案)

然后保存,改名为 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

解决codeblocks调试vector、map等STL容器不能查看元素问题(windows)(小白方案)

3. 重启codeblocks,试一下

解决codeblocks调试vector、map等STL容器不能查看元素问题(windows)(小白方案)