ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

常见GDB调试命令

2019-09-07 12:03:39  阅读:493  来源: 互联网

标签:info 打印 常见 pid gdb GDB test 断点 调试


Pmap 打印命令格式

1、Std::map<int,int> test_map

Pmap test_map in tint

2、class *test_class;

Std::map<int,*test_clss> test_map

Pmap test_map int 即可,

Pmap test_map int *test_class打印好像会有问题

需要安装stl-views脚本,网上下载(ie无法下载),然后放到/root目录下,在gdb调试环境下执行命令source ~/stl-views即可,接下来就可以打印了stl变量了

pvector、plist、pstring

3、b SvrSessionCore.cpp:1515对1515行断掉调试

设置条件断点b 17 if i == 8. 在17行设置一个断点,并且只有i==8的时候才会触发.

 

4、b Dahua::Netframwork::CNethandle::unregister

对某个函数进行断掉调试

 

5、r开始运行

 

6、c遇到断点,继续执行

 

7、thread apply all bt 查看所有的线程

 

8、f 4当前堆栈的第四层

 

9、gdb attach pid 进行运行状态的程序进行调试,进入之后执行c,gdb –p pid这种方式进入的好像不需要执行任何命令

 

10、info symbol *0xf5638c70

 

11、p *(Dahua::StreamMedia::CRtpDataSrc*)0xf5638c70

 

12、s(step)进入函数体,类似于windows的F11

 

13、finish退出函数体,类似于windows的F10

 

14、gdb attach pid,然后执行generate-core-file,手动产生core文件

 

15、set print pretty可以将打印信息格式化,这样p this的时候看到的信息更为方便

 

16、x命令查看内存信息

x/100c 0xa61aea00-100查看0xa61aea00地址前面100个字节的字符信息,100c表示查看100个字节的内存信息,c表示按照字符形式打印出来

x/64x addr 表示打印addr地址内存内容

,每次打印64个,16进制形式打印

x/64s 0xf5638c70以字符形式打印64个字符

 

17、x/100x 0xf5638c70以16进制打印100个字符,16、17经常打印前面地址信息,直接在地址前面加减即可,如x/100x 0xf5638c70-100,表示打印前面一个0xf5638c70地址前面100个字节的内容

 

18、set logging file mts.txt设置调试信息日志生成文件名,不这么操作的话,默认gdb.txt

Set logging on开启日志                                        

…//执行命令

Set logging off//关闭日志

 

19、info sharedlibrary查看动态库的调试信息加载情况,如果有*号,表示动态库加载失败?

 

20、gdb –p pid进去之后,执行call malloc_trim(0),清缓存

 

21、disassemble反汇编

 

22、查看当前断点信息info b

delete 删除当前所有的断点

delete 5删除序列号为5的断点,通过上面info b可以知道当前断点信息

disable 5使断点5失效

enable 5使断点5重新生效

23、r开启,

c遇到断点调过之后继续运行

s进入函数内部

finish跳出函数堆栈

24、info args 打印当前函数名和函数参数

info locals打印局部变量信息

25、gdb attach pid进入运行的程序当中,然后执行generate-core-file生成core文件,实际直接执行gcore pid就好了,程序还不会挂掉(kill -6 pid生成core会挂掉)

26、set print elements 0在打印长字符串的时候,gdb默认是打印200个字符,如果字符串超过了200,就会显示…通过这个命令可以设置成打印无限长度的字符串

27、在gdb调试状态下,输入shell之后,可以和linux环境一样,执行各种命令,比如上面的shell pmap pid28、watch

watch <expr>:为表达式(变量)expr设置一个观察点。一旦表达式值有变化时,马上停住程序。

rwatch <expr>:当表达式(变量)expr被读时,停住程序。

awatch <expr>:当表达式(变量)的值被读或被写时,停住程序。

info watchpoints:列出当前所设置了的所有观察点。(csdn博客上有专门的介绍,对于定位踩内存有一定的用处)

29、call +函数名,强制程序执行函数,比如执行call malloc_trim(0),释放应用的缓存空间

 

 

 

 

 

 

 

 

标签:info,打印,常见,pid,gdb,GDB,test,断点,调试
来源: https://blog.csdn.net/momo459548255/article/details/100594229

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有