赞
踩
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),释放应用的缓存空间
30、碰到过一个栈溢出崩溃问题,这种情况下堆栈有20000+栈帧,这种情况下,bt的话,基本无法查看,输入命令bt -20表示方向查看最开始20帧,bt 20顺向查看20帧堆栈
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。