gdb 查看stl


 
see here
 

首先安装Python
解压 tar -jxvf Python-2.7.***
cd Python**
./configure --with-shared
make
make install

then install Gdb
tar -zxvf gdb-7.2 **
./configure --with-python --with-expat=no
make
make install

cp libstdcxx 到任意位置
cp gdbinit to 根目录下 改为.gdbinit 并修改里面sys.path.insert(0, '/usr/local/bin/') 引号内为libstdcxx位置
注意python强类型语言,gdbinit前面不能有空格

<think>好的,用户想知道如何在GDB中打印STL容器的内容。根据系统指令,我需要确保行内数学表达式正确使用$...$,独立公式用$$...$$,同时用中文回答,生成相关问题,并正确引用参考资料。 首先,用户的问题是关于GDB调试STL容器显示问题。根据引用[1],默认情况下使用“p variable-name”会显示复杂的模板信息,不够直观。所以解决方法应该是配置.gdbinit文件,使用提供的脚本。我需要详细说明步骤,包括下载脚本、保存到主目录、重新加载GDB等。 然后,用户可能需要知道具体的使用方法,比如命令格式,比如使用“pvector”来打印vector,或者“pmap”打印map。需要举例子,比如创建一个vector<int>并演示如何打印。这部分需要确保示例代码正确,并且命令准确。 另外,引用[2]和[3]提到其他调试工具,但用户的问题集中在GDB,所以可能不需要深入讨论其他工具,但可以简要提及作为扩展信息。不过根据问题,重点还是配置GDB的脚本。 接下来,生成相关问题需要考虑用户可能的后续疑问,比如自定义脚本、其他容器类型、调试技巧、与Valgrind结合使用等。这些问题需要基于引用内容,尤其是引用[1]中的脚本和引用[3]中的工具比较。 需要检查是否符合所有系统指令,特别是引用标识的添加,每个引用末尾自然标注。例如,在提到.gdbinit文件时,添加[^1],在提到其他调试工具时引用[^3]。 最后,确保回答结构清晰,分步骤说明配置和使用方法,给出示例,并相关问题覆盖用户可能的兴趣点。同时避免使用任何markdown格式,用自然的中文口语化表达。</think>在GDB中打印STL容器内容时,默认使用`p variable-name`会输出复杂的模板定义和指针信息[^1]。通过配置`.gdbinit`文件可实现人性化显示,具体步骤如下: 1. **安装STL容器可视化脚本** - 下载专用脚本(如`gdb_stl_views`)保存到`$HOME/.gdbinit` - 示例命令: ```bash wget https://your-download-url/gdb_stl_views -O ~/.gdbinit ``` 2. **重新加载GDB配置** ```bash gdb -q ./your_program ``` 3. **使用专用命令打印容器** - 向量:`pvector variable_name` - 列表:`plist variable_name` - 映射:`pmap variable_name` - 示例调试过程: ```cpp // 示例代码 std::vector<int> test_vec{1,2,3}; ``` ```gdb (gdb) pvector test_vec $1 = {1, 2, 3} ``` 该脚本支持20+种容器类型,包括`std::stack`、`std::priority_queue`等[^1]。对于嵌套容器如`vector<map<int, string>>`,仍能保持可读格式输出。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值