让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 ...
随机推荐
- [C++] socket - 2 [UDP通信C/S实例]
服务端: #include<iostream> #include<winsock2.h> #include<stdio.h> #pragma comment(lib ...
- Null 与 “” 的区别
说明:很多人有时候对于 null 和 "" 不是很清楚,结合其他人的文章,今天做下解释. String str1 = null; str引用为空 String str2 = &qu ...
- latex数字加粗后变宽
latex的数字默认用的是Times New Roman字体,这个字体有个不优美之处就是加粗后会变宽,如下图所示: 平常倒是也无所谓.昨天在把实验数据整理进表格时,为了凸显每个数据集上各个实验方法的优 ...
- [数据库]SQL中Group By 的常见使用方法.
前言今天逛java吧看到了一个面试题, 于是有了今天这个文章, 回顾下Group By的用法.题目如下:Select name from table group by name having coun ...
- 两两组合覆盖测试用例设计工具:PICT
两两组合覆盖测试用例设计工具:PICT 2016-08-31 目录 1 成对测试简介2 PICT使用 2.1 安装 PICT 2.2 使用PICT3 PICT算法 3.1 准备阶段 3.2 产 ...
- javascript实例——时间日期篇(包含5个实例)
本来想在网上找一些js实例来练练手,结果发现一本书<突破JavaScript编程实例五十讲>,看了下内容还不错,就下了下来: 后面又下了该书籍的源码,一看才发现这本书编的日期是2002年的 ...
- Help Viewer 2.2 独立运行
"C:\Program Files (x86)\Microsoft Help Viewer\v2.2\HlpViewer.exe" /catalogName VisualStudi ...
- python爬虫代码
原创python爬虫代码 主要用到urllib2.BeautifulSoup模块 #encoding=utf-8 import re import requests import urllib2 im ...
- 强烈推荐android studio用的几个插件
http://blog.csdn.net/liang5630/article/details/46366901 android studio常用插件,可极大简化开发,增强开发效率. 不懂安装studi ...
- Activiti 查询流程定义
package com.mycom.processDefinition; import java.io.InputStream; import java.util.List; import java. ...