我想在 GDB 中检查 std::vector
的内容,我该怎么做?为简单起见,假设它是 std::vector<int>
。
原文由 John Carter 发布,翻译遵循 CC BY-SA 4.0 许可协议
我想在 GDB 中检查 std::vector
的内容,我该怎么做?为简单起见,假设它是 std::vector<int>
。
原文由 John Carter 发布,翻译遵循 CC BY-SA 4.0 许可协议
在调试时“观察”STL 容器有些问题。这是我过去使用过的 3 种不同的解决方案,它们都不是完美的。
使用来自 http://clith.com/gdb_stl_utils/ 的 GDB 脚本 这些脚本允许您打印几乎所有 STL 容器的内容。问题是这不适用于嵌套容器,如一堆集合。
Visual Studio 2005 对观看 STL 容器提供了极好的支持。这适用于嵌套容器,但这仅适用于 STL 的实现,如果您将 STL 容器放入 Boost 容器中则不起作用。
在调试时为要打印的特定项目编写自己的“打印”函数(或方法),并在 GDB 中使用“调用”来打印项目。请注意,如果您的 print 函数没有在代码中的任何位置调用,g++ 将执行死代码消除,并且 GDB 将找不到“print”函数(您将收到一条消息,指出该函数已内联)。所以用 -fkeep-inline-functions 编译
原文由 Nikhil 发布,翻译遵循 CC BY-SA 3.0 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答1.6k 阅读✓ 已解决
要查看向量 std::vector myVector 内容,只需输入 GDB:
这将产生类似于以下内容的输出:
要实现上述目标,您需要拥有 gdb 7(我在 gdb 7.01 上对其进行了测试)和一些 python 漂亮的打印机。这些安装过程在 gdb wiki 上进行了描述。
更重要的是,在上面安装之后,它适用于 Eclipse C++ 调试器 GUI(以及任何其他使用 GDB 的 IDE,我认为)。