赞
踩
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格式显示N个U数值。例如:x/4ub 0x4000
意思是以无符号十进制整数格式(u)显示四个字节(b),0x4000,0x4001,0x4002,0x4003。-
参考1:http://blog.163.com/muren20062094@yeah/blog/static/161844416201152031826666/
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。