让mingw gdb支持STL,并自动load .gdbinit
环境要求:python (2.7版本可以,3.x没测过),mingw官方版(你可能已经有了),gdb2013-02-04(到这里https://code.google.com/p/qp-gcc/downloads/list下载,如果有更新版本,应该也可以,目前2013-02-04是最新版)
推荐的GDB支持STL的方式是用python script。据说各方面都比那个stl-views-1.0.3.gdb要好(关于这个,可以参考http://blog.csdn.net/someonea/article/details/2979369)
目前mingw官方的GDB是7.6.1,不支持python script。检查其是否支持python脚本的方法是:在gdb终端输入:
https://code.google.com/p/qp-gcc/downloads/list 这个链接里的GDB是支持python的,你可以下载下来,加到PATH环境变量中的最前端,这样以后从cmd启动就会默认用这个gdb(因为貌似系统读PATH变量是从左向右读的,找到第一个就结束)
然后在终端运行gdb,输入python print sys.version来验证一下
然后把下面这段代码保存到pp.gdb里(理论上,任何目录都可以,但是推荐放在个人目录下,如C:\Users\your_username,或者工作目录下,两个地方都放一份也OK)
python
import sys
sys.path.insert(0, 'c:/MinGW/share/gcc-4.7.2/python/libstdcxx/v6')
from printers import register_libstdcxx_printers
register_libstdcxx_printers (None)
end
注意,上面的目录要根据你实际情况来改,比如,我的是
sys.path.insert(0, 'D:/MinGW/share/gcc-4.8.1/python/libstdcxx/v6')
然后,当你启动gdb之后,可以在gdb终端输入source pp.gdb(如果放在个人目录,可能要加上目录前缀),就会加载这里的设置,就可以看STL的内容了
但是,每次启动都输入一次这个命令还是有点麻烦,我们可以把这句命令放到.gdbinit里,让gdb启动时自动加载
我发现把.gdbinit放到当前工作目录、gdb.exe所在目录都不行,一个可行的方法是:
把.gdbinit放到个人目录,如C:\Users\your_username,把pp.gdb放到相同目录,.gdbinit的内容就是source pp.gdb
然后把windows的环境变量HOME设置为C:\Users\your_username(在我的电脑上,这个环境变量原来是不存在的,你的可能也是如此)
这样就可以了,以后启动gdb时,就会自动加载.gdbinit,也就自动可以用python脚本来打印STL的内容了,使用方法和打印普通变量相同,就是p variable_name
参考:
http://wiki.codeblocks.org/index.php?title=Pretty_Printers
https://sourceware.org/gdb/wiki/STLSupport
让mingw gdb支持STL,并自动load .gdbinit的更多相关文章
- GDB —— 优化STL容器变量的显示
步骤 wget http://www.yolinux.com/TUTORIALS/src/dbinit_stl_views-1.03.txt cp dbinit_stl_views-1.03.txt ...
- 支持stl容器的gdb自定义命令
# 本文可以从https://sourceware.org/ml/gdb/2008-02/msg00064/stl-views.gdb直接下载 # 有关gdb的高级使用,请浏览:http://blog ...
- GDB打印STL容器内容
GDB调试不能打印stl容器内容,下载此文件,将之保存为~/.gdbinit就可以使用打印命令了. 打印list用plist命令,打印vector用pvector,依此类推. (gdb) pvecto ...
- 使用linux的GDB打印STL(vector,map,set..................)
在linux用gdb或者cgdb计较不爽的地方是无法打印STL的东西,所有啊去网上找了找解决方案https://www.douban.com/note/182826844/?qq-pf-to=pcqq ...
- 使用GDB调试STL容器
GDB中print方法并不能直接打印STL容器中保存的变量,想知道STL容器保存的变量,使用如下办法: 1. 创建文件~/.gdbinit: # # STL GDB evaluators/views/ ...
- Apollo 2 如何支持 @Value 注解自动更新
前言 Apollo 在 v0.10.0 版本后,支持自动更新.v0.10.0之前的版本在配置变化后不会重新注入,需要重启才会更新. 也就是说,如果一个属性加入了 @Value 注解,并且这个配置在配置 ...
- 支持宕机自动恢复触发一次性或周期性任务执行的组件包首次介绍-easyTask
easyTask介绍 一个方便触发一次性或周期性任务执行的工具包,支持海量,高并发,高可用,宕机自动恢复任务 使用场景 需要精确到秒的某一时刻触发任务执行.比如订单交易完成24小时后如果客户未评价,则 ...
- 【Java】利用反射执行Spring容器Bean指定的方法,支持多种参数自动调用
目录 使用情景 目的 实现方式 前提: 思路 核心类 测试方法 源码分享 使用情景 将定时任务录入数据库(这样做的好处是定时任务可视化,也可以动态修改各个任务的执行时间),通过反射执行对应的方法: 配 ...
- 开源支持东财自动交易的简单量化交易框架pytrader
pytrader是基于 easytrader 和 easyquotation 的量化交易框架,支持东方财富自动交易,支持进行策略回测. 开源地址:https://github.com/jadepeng ...
随机推荐
- redis 内存
ziplist:http://blog.csdn.net/benbendy1984/article/details/7796956 redis 内部存储结构:http://www.searchtb.c ...
- 【Android】应用程序启动过程源码分析
在Android系统中,应用程序是由Activity组成的,因此,应用程序的启动过程实际上就是应用程序中的默认Activity的启动过程,本文将详细分析应用程序框架层的源代码,了解Android应用程 ...
- 最简单的方式理解Vue的自定义指令与混合
vue.js 自定义指令 钩子函数:bindinsertedupdatecomponentUpdatedunbind 钩子函数完整实例:html: <div id="hook-argu ...
- 首先定义一个描述银行账户的Account类,包括成员变 量“账号”和“存款余额”,成员方法有“存款”、“取款”和“余额查询”。其次, 编写一个主类,在主类中测试Account类的功能。(已完善)
package java1; public class Account { String zhanghao; double yue=0; double add; double get; Account ...
- js中的eval()和catch()
定义和用法 eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码. 语法 eval(string) 参数 描述 string 必需.要计算的字符串,其中含有要计算的 Java ...
- [推荐]DDOS攻击与防范知识介绍
[推荐]DDOS攻击与防范知识介绍 DDOS攻防体系建设v0.2(淘宝-林晓曦) http://wenku.baidu.com/view/39549a11a8114431b90dd866.ht ...
- 店商互联(北京)科技发展有限公司DS365.com
店商互联(DS365)是目前北京最为知名的社区便超O2O平台服务商,店商互联(DS365)通过自主研发的移动订货配送与网络营销服务平台,以移动互联网和大数据为技术支撑,为社区超市实体店提供手机订货.物 ...
- GO語言視頻教程
第1课:https://github.com/Unknwon/go-fundamental-programming/blob/master/lectures/lecture1.md Go开发环境搭建h ...
- HTML解析组件HtmlAgilityPack使用
HtmlAgilityPack是一个开源的解析HTML元素的类库,最大的特点是可以通过XPath来解析HMTL,如果您以前用C#操作过XML,那么使用起HtmlAgilityPack也会得心应手.目前 ...
- Android——程序移植 相关知识总结贴
android 移植笔记有感 http://www.apkbus.com/android-11842-1-1.html Android振动器系统结构和移植和调试 http://www.apkbus ...