How to debug C++ STL vector

本文介绍了如何在GDB中有效地调试C++ STL vector。针对GDB 7.0之前的版本,提供了一种打印element内容的方法。对于更高版本,推荐使用GCC的Python脚本来改善输出。官方还提供了STL support工具,包括pvector等命令,便于查看STL容器数据。通过将stl-views-1.0.3.gdb文件重命名为.gdbinit,启动GDB时会自动加载,简化调试过程。
摘要由CSDN通过智能技术生成

How to debug C++ STL vector

用GDB 调试C++代码的时候,如果遇到STL vector,map 或者list的时候,想要print 数据的时候发现GDB会打出一堆信息,但是其实对于程序来说关心的只是其中的element数据是什么,那如何只输出我们想要的结果呢?
版本比较低的GDB,比如低于GDB7.0, 其实用以下print命令是可以只打印出element的内容。

print *(Vector._M_impl._M_start)@Vector.size()

gdb 7.0之后,可以使用gcc提供的python脚本,来改善显示结果,所以一般用比较高的版本 是可以得到期望的结果的。

(gdb) p II
$1 = std::vector of length 3, capacity 4 = {10, 20, 30}

但是还是搜索了一下网上,发现官方提供了STL support工具。
Download stl-views-1.0.3.gdb

在这个文里定义了很多绪如:pvector, pmap, pstring之类的GDB函数供我们使用
将这个文件下载到自己的HOME目录,rename it to .gdbinit,这样每次启动gdb的时候就会自动加载这个文件。
然后我们就可以直接使用pvector, pmap, 和plist来查看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值