在gdb中查看stl容器

在gdb中查看stl容器

 

(本文主要内容来自于http://sourceware.org/gdb/wiki/STLSupport )

目前,gdb默认不能print出stl容器的内容,但是网上有好多种方案来做这件事,我试用了一下,比较方便的是以下两种:

Table of Contents

1 gdb-stl-views

这是由Dan Marinescu编写的一些宏,用来查看gdb容器内容,支持list, vector, map, multimap, set, multiset, dequeue, stack, queue, priorityqueue , bitset, string, 以及widestring,从 http://sourceware.org/gdb/wiki/STLSupport?action=AttachFile&do=view&target=stl-views-1.0.3.gdb 可以下载这个文件,下载后把它放到用户目录下改名为.gdbinit。之后再进入 gdb就可以用以下这些命令查看容器内容了:

pvector, plist, pmap, pset, pdequeue, pstack, pqueue, ppqueue, pbitset, pstring, pwstring

用help可以查看命令的帮助,比如help pvector。这个方法可以支持广泛的gdb 版本,据说是GDB 4.3+都可以,我只在GDB 6.x和GDB 7.0使用过。不过好像目前不能支持MinGW中的GDB。

2 GDB 7.0

GDB 7.0加入了python脚本支持,可以通过python编写pretty-printers用来显示 stl容器。

方法是通过svn下载python libstdc++ printers:

svn co svn://gcc.gnu.org/svn/gcc/trunk/libstdc++-v3/python

我把下载来的python目录放在用户目录下的.gdb下。之后在~/.gdbinit中加入下面的内容:


 

这样就为stl容器安装好了pretty-printers,在GDB中直接print容器会直接 print出容器内容,而不是以前那一堆乱七八糟的东西。

这个方案的好处是直接用print完成,不用记很多的自定义宏,并且假如临时想看看gdb默认的输入,还可以用print /r来切换为raw模式的输出。

不过麻烦的是必须在GDB 7.0及以后版本才能使用这么方便的功能,而当前很多系统上安装的GDB还是6.x甚至5.x的。所以只能寄希望于各发行版赶紧升级到GDB 7.0。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值