C/C++ - Codeblocks 调试 MinGW GDB STL (查看容器数据)配置教程(完整版)

一、资源下载

  1. python-3.6.5.exe
  2. python-2.7.5.exe
  3. gdb-7.2
  4. gdb-7.5.1(syscalls+python)
  5. mingw-static-4.4.5-all

二、配置教程

  • H:\CodeBlocks\MinGW (这是我文件的目录,以下会以此为基础讲解,你自己的目录就对号入座,推荐默认路径)。
  • 套餐推荐:python-2.7.5 + gdb-7.2.5 + mingw-static-4.4.5-all。
  • 测试的时候,推荐使用 map+结构体嵌套于map+数组嵌套于结构体 ,试试这种复杂的,vector 无需测试,本来就支持的。
  1. 备份 MinGW 文件夹,以免操作有误,还可以恢复。
  2. 将下载好的文件(gdb-7.2)解压到 H:\CodeBlocks\MinGW\bin 目录下,覆盖原有的文件,如图3、4。
  3. 分别为 gdb.exe、python.exe 配置环境变量,如图6(gdb 环境变量配置),python 在安装的时候自动配置环境变量,如果没有,则百度一下,你就知道。
  4. 配置环境变量目的是为了方便使用CMD,如图8,红框两个命令输入完弹出以下信息则成功了一半了。
    Ps:如果输入“gdb”报错,“ImportError: No module named _gdb”很可能是因为 python 版本冲突问题,这里就需要用到我们上面下载的资源3(gdb-7.5.1(syscalls+python))将里面的两个文件夹覆盖到 H:\CodeBlocks\MinGW\share\gdb。
  5. 分别运行命令以下,如图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.”所以就想到可能是相对路径或者绝对路径的问题,所以如果不行的话,直接按照上面所说的绝对路径写死即可。
  6. 接着,在 C::B 里配置 Debuggering Settings,红框,里输入刚刚的命令,如图12。
    Ps:这里需要看下你 C::B 版本,我这里是 16.01 版,有些 13.0+ 版可能界面稍微有些不一样。
  7. 最终记得重启软件(或者保险点重启下电脑,毕竟配置了那么多),打开 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-17.12mingw-nosetup 免安装版 下载解压之后就可以直接使用无需安装 文件列表: Addr2LineUI.exe CbLauncher.exe cbp2make.exe cb_console_runner.exe cb_share_config.exe codeblocks.dll codeblocks.exe dbghelp.dll exchndl.dll mgwhelp.dll MinGW MinGW\bin MinGW\bin\addr2line.exe MinGW\bin\ar.exe MinGW\bin\as.exe MinGW\bin\c++.exe MinGW\bin\c++filt.exe MinGW\bin\cpp.exe MinGW\bin\dlltool.exe MinGW\bin\dllwrap.exe MinGW\bin\elfedit.exe MinGW\bin\g++.exe MinGW\bin\gcc-ar.exe MinGW\bin\gcc-nm.exe MinGW\bin\gcc-ranlib.exe MinGW\bin\gcc.exe MinGW\bin\gcov.exe MinGW\bin\gdb.exe MinGW\bin\gdbserver.exe MinGW\bin\gprof.exe MinGW\bin\ld.bfd.exe MinGW\bin\ld.exe MinGW\bin\libatomic-1.dll MinGW\bin\libcharset-1.dll MinGW\bin\libgcc_s_dw2-1.dll MinGW\bin\libgcc_s_sjlj-1.dll MinGW\bin\libiconv-2.dll MinGW\bin\libintl-8.dll MinGW\bin\libquadmath-0.dll MinGW\bin\libssp-0.dll MinGW\bin\libstdc++-6.dll MinGW\bin\libwinpthread-1.dll MinGW\bin\mingw32-c++.exe MinGW\bin\mingw32-g++.exe MinGW\bin\mingw32-gcc-4.9.2.exe MinGW\bin\mingw32-gcc-ar.exe MinGW\bin\mingw32-gcc-nm.exe MinGW\bin\mingw32-gcc-ranlib.exe MinGW\bin\mingw32-gcc.exe MinGW\bin\mingw32-make.exe MinGW\bin\mingwm10.dll MinGW\bin\nm.exe MinGW\bin\objcopy.exe MinGW\bin\objdump.exe MinGW\bin\ranlib.exe MinGW\bin\readelf.exe MinGW\bin\size.exe MinGW\bin\strings.exe MinGW\bin\strip.exe MinGW\bin\windmc.exe MinGW\bin\windres.exe MinGW\bin\zip.exe MinGW\bin\zlib1.dll MinGW\COPYING.ISL.txt MinGW\COPYING.MinGW.txt MinGW\COPYING.RUNTIME-gcc-tdm.txt MinGW\COPYING.winpthreads.txt MinGW\COPYING3-gcc-tdm.txt MinGW\COPYING3.LIB-gcc-tdm.txt MinGW\doc MinGW\doc\runtime MinGW\doc\runtime\CONTRIBUTORS MinGW\doc\runtime\DISCLAIMER MinGW\doc\runtime\README MinGW\include MinGW\include\accctrl.h MinGW\include\aclapi.h MinGW\include\aclui.h MinGW\include\adsprop.h MinGW\include\afxres.h MinGW\include\amaudio.h MinGW\include\amvideo.h MinGW\include\assert.h MinGW\include\audevcod.h MinGW\includ
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陆氪和他的那些代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值