Linux下强大的GDB

来源:互联网 发布:ubuntu没有文本输入 编辑:程序博客网 时间:2024/06/04 19:10

Linux下GDB调试常驻程序

 

不多说,不至于忘记,还是几下以下整理的流程。

>ps -ef|grep <pname>           得到需要调试的进程的pid

>gdb --pid  <pid>             <pid>为需要调试的进程的进程号

>bt                            backtrace简写,打印出栈的内容,显示将程序带到当前位置的函数调用和参数值

>frame <number>                <number>为bt打印出的栈的编号,使用frame来选择程序的调试起点,也可以使用break来选择指定的行或者函数来作为断点

>s                             单步执行

以上几步就可以debug系统的常驻进程了。

 

以下总结常用命令:

s:   单步执行,进入函数内部,相当于VS的F11

n:   单步执行,不进入函数内部,相当于VS的F10

c:执行到下一个断点,相当于VS的F5

l: 列出代码,后跟数字表示列出多少行

p  <var_name>:打印变量

p  <var_name>=<new_valaul>:改变变量的值 

b  <fun_name/line_number>: 设置断点

set  args <string>:设置命令行参数

set <var_name>=<new_valaul>:设置变量的值 

jump <line_number>:调到相应的行执行

x/NFU ADDR检查内存的指令x,x是examine的意思。用法如下:
其中N代表重复数,F代表出格式,U代表每个数据位的大小。U可以去如下
b
:字(byte)
h
:双字
w
:四字
g
:八字

F可以是以下的一些
'x' 16
制整数格
'd'
有符号十制整数格
'u'
无符号十制整数格9 k3 z6 M+ G8 O( B) q" ?4 j
'f'
浮点数格式4 k$ k. k,M& h* ?2 d5 ]
因此,上面的指令可以这样:从ADDR地址开始,以F格式NU。例如:x/4ub 0x4000
意思是以无符号十制整数格式(u)示四个字(b)0x40000x40010x40020x4003


参考1:http://blog.163.com/muren20062094@yeah/blog/static/161844416201152031826666/

参考2:http://blog.chinaunix.net/uid-21712186-id-1818222.html

参考3:http://tech.techweb.com.cn/thread-257101-1-1.html

原创粉丝点击