使用GDB 7.0打印STL容器

11

我已按照说明安装了GDB 7.0和Python。在同一份手册中,提到了这个文件stl-views-1.0.3.gdb。让我困惑的是它应该放在哪里才能启用STL容器的漂亮打印。有没有人能向我解释一下这个工作的全部内容?

谢谢


可能是如何在GDB中漂亮地打印STL容器?的重复问题。 - Ciro Santilli OurBigBook.com
3个回答

14
据我的了解,stl-views 是查看 STL 容器的旧方法,并且在几乎所有方面都不如新的 Python 支持。您应该使用 libstdcxx_printers Python 漂亮打印机。请注意保留 HTML 标记,不要进行解释。

libstdcxx_printers和stl-views有什么区别? - Nordlöw
libstdcxx_printers是作为GCC的一部分进行发布和维护的,因此它们始终与您使用的编译器版本相匹配,并且了解容器内部的更改。Python打印功能会自动启用,功能更强大,并且更容易扩展到您自己的类型。 - Jonathan Wakely
获取 libstdcxx 漂亮打印机的指令在 http://gcc.gnu.org/onlinedocs/libstdc++/manual/debug.html#debug.gdb。 - Evgeni Sergeev

10

在gdb中:

source {full_path}stl-views-1.0.3.gdb

现在你将拥有新的命令,例如pvector、plist、pmap,替换{full_path}为文件的完整路径。

你还可以将命令source stl-views-1.0.3.gdb放置在~/.gdbinit中,这样每次启动gdb时就会自动加载该命令。


1
我每次加载gdb都需要这样做吗?它可以默认完成吗?stl-views-1.0.3.gdb应该位于当前工作目录中吗? - vehomzzz
2
你不能把它放在你的~/.gdbinit里吗? - Cascabel
@Kache4,你真的有这个文件吗?source stl-views-1.0.3.gdb不是一个命令,而是一个后面跟着文件名的命令,尽管你现在可能已经明白了这一点。 - vehomzzz
@Drakosha 你好,假设pvector可行,如果我有一个数据结构,其中包含向量内的向量(vector<vector<int>>),我该如何打印内部向量的元素? - Scott Yang
啊,我明白了。对于我上面描述的情况,pvector 命令会自动打印内部向量的元素。https://blog.csdn.net/cws1214/article/details/8500730 http://www.yolinux.com/TUTORIALS/src/dbinit_stl_views-1.03.txt - Scott Yang
显示剩余4条评论

0

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