C/C++ - Codeblocks 调试 MinGW GDB STL (查看容器数据)配置教程(完整版)
Posted 放羊的牧码
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C/C++ - Codeblocks 调试 MinGW GDB STL (查看容器数据)配置教程(完整版)相关的知识,希望对你有一定的参考价值。
一、资源下载
二、配置教程
- H:\\CodeBlocks\\MinGW (这是我文件的目录,以下会以此为基础讲解,你自己的目录就对号入座,推荐默认路径)。
- 套餐推荐:python-2.7.5 + gdb-7.2.5 + mingw-static-4.4.5-all。
- 测试的时候,推荐使用 map+结构体嵌套于map+数组嵌套于结构体 ,试试这种复杂的,vector 无需测试,本来就支持的。
- 备份 MinGW 文件夹,以免操作有误,还可以恢复。
- 将下载好的文件(gdb-7.2)解压到 H:\\CodeBlocks\\MinGW\\bin 目录下,覆盖原有的文件,如图3、4。
- 分别为 gdb.exe、python.exe 配置环境变量,如图6(gdb 环境变量配置),python 在安装的时候自动配置环境变量,如果没有,则百度一下,你就知道。
- 配置环境变量目的是为了方便使用CMD,如图8,红框两个命令输入完弹出以下信息则成功了一半了。
Ps:如果输入“gdb”报错,“ImportError: No module named _gdb”很可能是因为 python 版本冲突问题,这里就需要用到我们上面下载的资源3(gdb-7.5.1(syscalls+python))将里面的两个文件夹覆盖到 H:\\CodeBlocks\\MinGW\\share\\gdb。 - 分别运行命令以下,如图10:
source H:\\CodeBlocks\\MinGW\\bin\\stl.gdb
source H:\\CodeBlocks\\MinGW\\bin\\wx.gdb
Ps:有些 blog 这里直接写 source stl.gdb,source wx.gdb。我自己一开始试了下,但输出“No such file or directory.”所以就想到可能是相对路径或者绝对路径的问题,所以如果不行的话,直接按照上面所说的绝对路径写死即可。 - 接着,在 C::B 里配置 Debuggering Settings,红框,里输入刚刚的命令,如图12。
Ps:这里需要看下你 C::B 版本,我这里是 16.01 版,有些 13.0+ 版可能界面稍微有些不一样。 - 最终记得重启软件(或者保险点重启下电脑,毕竟配置了那么多),打开 C::B ,如图14效果图。
三、注意事项
- 不能调试的原因有可能是创建的工程路径为中文名或者路径中有空格。
- 如果变量没有自动显示,自己可以手动输入变量名。
- 如果还是没有显示容器数据,可能跟 C::B 版本有关,如图,把红勾取消掉,重启软件,再命令重新输入,再打开 C::B 看看。
Ps:当然这个方法没有验证过,是否这里出问题,我当时也很郁闷,一直不行,但是就把这里去掉之后就可以了,哪怕后来勾上了还是可以。 - 有些blog说需要配置自动启动命令文件,但是我发现我这个版本不需要配置,很开心,如果你的版本需要每次都输入命令才有效的话,则看下面【文献参考】里的文章会提到如何配置自动启动命令。
- 如果出现一些奇怪的现象:调试时,黄色小箭头不见了(调试依然进行);for(...) 循环中 i、j 变量查看不了;则很有可能是 gdb 出问题,比如一些版本之间的兼容问题。
- 当然在以上操作测试中,很有可能会搞不好了,导致整个 gdb 需要重新安装,所以最好先备份一份原先的。当然,如果需要彻底重新纯净安装,注意:不仅需要卸载该程序(或删除当前的安装的文件夹),很重要一点,还要删除在Codeblocks的配置文件(手动删除),具体位置(若找不到该文件夹,需要开启隐藏的文件/文件夹选项):C:\\Users\\"你的用户名"\\AppData\\Roaming\\Codeblocks,手动删除后再重新安装即可。
四、补充 Codeblocks BUG
- 版本 13.12~16.01,自带 bug ,debug 时,watches 窗口不开没事,开了的话卡顿。特别是有数组开得很大的情况下,比如:string[](特别是在 main( ) 函数里的时候,虽然有些版本调试依然正常,但是不能查看变量string[],一旦查看就报错,比如版本12.11), 因为变量监视引起的,所以推荐放在 main函数外面(作为全局变量),否则 debug 单步调试速度会受到影响。当然最新版本(17.12)推荐使用该版本,稍微会兼容一点。但是17.12发现一些提示的bug,比如:string,所以本人自己最终还是退回到16.01版本。
五、文献参考
- codeblocks 使用 (笔记)__西西_的博客-CSDN博客
- python - Windows, Eclipse, Pretty Printers - ImportError: No module named _gdb - Stack Overflow
- 让mingw gdb支持STL,并自动load .gdbinit - ttang - 博客园(包含自动启动命令)
- Index of /gnu/gdb
- Codeblocks调试STL——gdb with python support - Wanglikai91 - 博客园
- https://code.google.com/archive/p/qp-gcc/downloads?page=1(需要翻墙)
以上是关于C/C++ - Codeblocks 调试 MinGW GDB STL (查看容器数据)配置教程(完整版)的主要内容,如果未能解决你的问题,请参考以下文章
在 CodeBlocks 中查看语言 (C/C++) 参考/文档
为啥我的codeblocks不能调试?点击调试时显示的信息如下