我在windows 10上使用eclipse 4.16.0和Mingw-w64。我的gdb(8.1)版本支持python。我的机器上有 python 2.7.9(与我在 Mingw-w64 文件夹中找到的 python 版本兼容)。问题是当我在 Eclipse 中检查“在变量/表达式树中启用漂亮打印机”选项时;这不起作用,因为我仍然无法在调试器窗口中看到 std::vector 的元素。我搜索并找到了此页面:https://wiki.eclipse.org/CDT/User/FAQ#How_can_I_inspect_the_contents_of_STL_containers.3F作为指南,但我认为这没有更新,因为漂亮打印机的选项已经存在于 eclipse 中。 当我在 gdb 中运行
info pretty-printers
时;事情看起来不错!所有容器和迭代器都会出现。我还检查了 gdbinit 的内容,它包含:
python
import sys
sys.path.insert(0, sys.path[0] + '/../../gcc-8.1.0/python')
from libstdcxx.v6.printers import register_libstdcxx_printers
register_libstdcxx_printers (None)
end
所以,我认为这https://sourceware.org/gdb/wiki/STLSupport不应该这样做。我说得对吗? 如果有人能帮助我找出问题所在,我将不胜感激。
我已经找到解决办法了! 事实上,即使使用最新版本的 eclipse 和支持 python 的 Mingw-w64,也有一些事情需要手动完成。 首先,确保您的系统上正确安装了 python 2.7(与 Mingw 支持的版本兼容)。这意味着 python 路径已添加到系统环境中。 其次,在我的例子中,唯一应该做的就是修改以下目录中的 .gdbint :
C:\Program Files\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64 tc
修改为indisde ''为python 27的路径
我的 .gdbint 现在包含:
python
import sys
sys.path.insert(0, 'C:\Program Files\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\share\gcc-8.1.0\python')
from libstdcxx.v6.printers import register_libstdcxx_printers
register_libstdcxx_printers (None)
end
然后,最后一步是调试配置;编辑配置/调试器 您只需按以下方式更改 gdb 命令文件即可:
C:\Program Files\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64 tc\gdbinit