2

现代 C++ 有很多模板化和包装的元素,这些元素在调试过程中变得很麻烦,因为 gdb 是一个通用调试器,没有特定的 c++ 功能。

无法轻松列出 STL 容器中的元素。使用 boost::shared_ptr 共享指针时,通常无法取消引用所指对象以查看发生了什么。

是否有一组 gdb 宏,甚至更高级的 gdb 版本可以使这些东西更容易看到?

4

1 回答 1

3

无法轻松列出 STL 容器中的元素。

是的,如果您使用的是 GDB 7 和最近四年左右的最新 GCC,那么您应该拥有 Python 漂亮的打印机,可以显示容器、智能指针和其他标准库类型的内容。在https://stackoverflow.com/a/15329434/981959上查看我的答案

您还可以为非标准类型编写自己的 python 打印机,例如boost::shared_ptr

是否有一组 gdb 宏,甚至更高级的 gdb 版本可以使这些东西更容易看到?

大约五年前有一些宏很有用,但现在不需要它们,因为它已内置到 GDB 和 GCC 中。所以我认为你的问题的答案是“是的,有更高级的 GDB,你试过升级吗?”

于 2013-10-06T16:13:59.667 回答