如何在Linux中使用GDB/Nemiver显示C++ STL容器

4
我正在使用Linux(Ubuntu 11.10)和gdb 7.3 / Nemiver 0.8.2。 我想显示STL容器的内容,但到目前为止,我并没有真正成功过。 是否有其他视觉调试器(更好地基于gdb),我应该使用以显示STL容器变量? 我正在寻找支持容器组合的解决方案(即std :: map >>)。 干杯。

1
说实话,它实际上并不是非常“可用”。如果我必须使用一个糟糕的可视化调试器,那么我认为裸的gdb会更好。干杯 - Emanuele
还有insight和随eclipse一起提供的调试环境。但我认为它们都是对gdb的封装(就像DDD一样)。 - jxh
最近的GDB(例如7.4)可以使用Python进行脚本编写,而最新的GCC(例如4.7)及其stdc++库甚至可以提供相关脚本以便漂亮地显示C++标准容器。 - Basile Starynkevitch
你可以为你的容器/类编写一个 .dump() 方法。 - Hrishi
2个回答

0

0

足够新的GDB版本支持Python的漂亮打印API。这使应用程序提供Python代码来自定义对象显示的某些方面。此代码旨在与CLI(在gdb提示符处“print”)和MI(GUI使用的接口,或者至少应该使用的接口)一起使用。

足够新的GCC版本为libstdc ++中的所有重要数据结构提供Python漂亮打印机。

最后一步是获得更新的nemiver版本。 我认为0.9.2具有此功能。

许多发行版都已设置好了gdb和gcc,以便如果您的程序使用libstdc ++,则会自动激活漂亮打印机。因此,只需升级nemiver可能就足以满足您的需求。否则,有很多在线文档说明如何设置此项。


具体来说,哪个版本的gdb / gcc包含了所有这些内容? - Emanuele
您需要至少 gdb 7.0-尽管更新版本更好,因为有进行了错误修正。另外,它必须启用了 Python 支持才能构建。我忘了哪个版本的 GCC 开始提供漂亮的打印机。我认为是4.5或4.6。您可以在源目录或安装目录中查找名为“printers.py”的文件。 - Tom Tromey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接