添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

GDB的自定义命令非常有用,通过自定义命令,直接操作容器中的数据,可以方便的查看STL容器中的数据。

这个链接 dbinit_stl_views Dan C Marinescu 写的查看STL容器的自定义命令(如果不适合你的STL版本的话,可以自行修改)。把它添加到你的.gdbinit中,就可以方便的查看STL容器了。它提供了查看vector,list,map,multimap,set,multiset,deque,stack,queue,priority_queue,bitset,string,widestring等对象的方法,非常好用!

1. 下载 http://www.yolinux.com/TUTORIALS/src/dbinit_stl_views-1.03.txt 2. #cat dbinit_stl_views-1.03.txt >> ~/.gdbinit 3. 若正处于gdb中,运行命令: (gdb) source ~/.gdbinit 4. 例如,如下代码: bugging.cpp
  1. #include <vector>
  2. using namespace std;
  3. int main()
  4. {
  5. vector< int > vec;
  6. vec.push_back(2);
  7. vec.push_back(3);
  8. vec.push_back(4);
  9. return 0;
  10. }
5. 默认情况下gdb不能用[]查看stl容器的数据元素,提示如下错误:

一些常用内置的命令

Data type   GDB command
std::vector<T>    pvector stl_variable
std::list<T>  plist stl_variable T
std::map<T,T> pmap stl_variable
std::multimap<T,T>    pmap stl_variable
std::set<T>   pset stl_variable T
std::multiset<T>  pset stl_variable
std::deque<T> pdequeue stl_variable
std::stack<T> pstack stl_variable
std::queue<T> pqueue stl_variable
std::priority_queue<T>    ppqueue stl_variable
std::bitset<n>td>  pbitset stl_variable
std::string pstring stl_variable

std::widestring pwstring stl_variable

dbinit_stl_views-1.03.txt 下载地址 : http://download.csdn.net/detail/dearwind153/9562875

转自: http://blog.csdn.net/blade2001/article/details/5290329

之前一直不知道 数据类型 的长度是如何被存到系统中的,现在找到了,原来是在regcache.c文件中。 regcache.c文件,init_regcache_descr (struct gdb arch * gdb arch) 初始化寄存器描述信息。 初始化了 类型 的长度等信息     long offset = 0; descr->sizeof_register
有的 gdb 版本不支持 打印 map 等stl,因此需要插件,在网上找到一个插件,进入 gdb ,source该文件即可。之后通过p map (p vector 等)可以获取 打印 map 的提示,下面是工具代码,保存下,方便以后使用。 # ...
转载自:http://blog.chinaunix.net/uid-20594049-id-1620139.html 1. 下载 http://www.yolinux.com/TUTORIALS/src/dbinit_stl_views-1.03.txt 2. #cat dbinit_stl_views-1.03.txt &gt;&gt; ~/. gdb init 3. 若正处于 gdb 中,运行命...
1、启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。 2、可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式) 3、当程序被停住时,可以检查此时你的程序中所发生的事。 4、动态的改变你程序的执行环境。 从上面看来, GDB 和一般的调试工具没有什么两样,基本上也是完成这些功能,不过在细节上,你会发现 GDB 这个调试工具的强大,大家可能比较习惯了图形化的调试工具,但有时候,命令行的调试工具却有着图形化...
<br />( gdb ) show architecture The target architecture is set automatically (currently i386) ( gdb ) p sizeof(void *) $1 = 4 ( gdb ) set architecture Requires an argument. Valid arguments are i386, i386:x86-64, i8086, i386:intel, i386:x86-64:intel, auto.
Linux gdb 调试如何print变量的地址 其实也没有啥别的,但是网络上很多的帖子都文不对题,这里自己调试了几遍发现其实只要按照c语言编程的思路把变量前面加上一个取地址符,就可以输出相应的地址了,和你print的格式并无多少关系。。很多网络上都给出来的结果都是把print的结果改成十六进制而已,我都差点被骗了。。 经年时令: 如果下面的方法都不行的话,可以试一试进入总线空闲,把dr和sr清除。if(USART_GetITStatus(RS485_USARTx,USART_IT_IDLE)!=RESET)//如果接收到一帧数据 Clear=RS485_USARTx->SR;//读SD寄存器 Clear=RS485_USARTx->DR;//读DR寄存器 linux_shell_awk 处理 文本文件 并导入excel DragonSO: 最后一步导入是什么鬼 sourceinsight 无法搜索类似 .s .S .kconfig文件的解决办法 想飞的鱼q: STM32串口一直进中断解决方法 qq_40659700: 感谢分享!!!问题已解决!