您的位置:首页 > 其它

gdb常用命令

2012-08-28 20:39 274 查看
1.在gdb中运行程序

gdb <program>

gdb <program> PID

attach PID #附加到进程上进行调试

detach PID #取消附加

quit(q) #退出gdb

run(r) #运行程序

2.查看运行信息

show args #查看设置好的运行参数

set args #设置运行时参数

pwd #显示当前目录

show paths #查看程序运行路径

3.调试

next(n) #单步调试(不进入)

step(s) #单步调试(进入)

print(p) #打印变量

backtrace(bt) #查看函数堆栈

finish #退出函数

continue(c) #继续

4.中断程序运行方式

在gdb中,可以使用以下几种方式来暂停程序的执行

断点(BreakPoint)、观察点(WatchPoint)、捕捉点(CatchPoint)、信号(Signals)和线程停止(Thread Stops)

如果恢复程序的运行可以使用continue(c)

5.断点

break(b) 文件名::行号/函数名 类::函数名 #加断点

info break(i b) #查看断点信息

clear 行号/函数名 #清除断点

clear #清除所有断点

disable 断点序号 #disable断点

enable 断点序号 #enable断点

delete breakpoint 断点序号

delete breakpoint #删除所有断点

6.信号

信号:信号是软件时将上对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的,信号是异步的。

Unix常用信号

SIGINT:中断字符信号,也就是Ctrl+C的信号

SIGBUS:硬件故障的信号

SIGCHLD:子进程状态改变信号

SIGKILL:终止程序运行信号

handle <signal> <keywords...> #定义一个信号处理
<keywords...>:nostop stop print noprint ...

info signals

info handle

signal <singal> #产生一个信号量给被调试的程序

7.线程

break <linespec> thread <threadno>

info threads #查看正在运行程序的线程信息

8.查看相关信息

info args #打印当前函数参数名及值

info locals #打印当前函数中所有局部变量及值

info catch #打印当前函数中的异常处理信息

backtrace(bt) #打印当前的函数调用栈的所有信息

backtrace(bt) <n> #查看n层栈的信息

print(p)/<进制标识> <expr> #显示表达式的值

print x=4 #设置变量值

进制标识
x:16进制
d:10进制
o:8进制
t:2进制
c:字符格式

examine(x) <addr> #查看内存

display <expr> #设置自动显示

undisplay <disnums...> #删除自动显示

delete display <disnums...> #删除自动显示

disable display <disnums...> #disable自动显示

enable display <disnums...> #enablee自动显示

info display

show language #查看当前语言环境

info source

whatis #识别数组或变量的类型

ptype #比whatis的功能更强,他可以提供一个结构的定义

9.显示源程序

list <linenum> #显示第linenum行的周围的源程序

list <function> #显示函数名为function的函数的源程序

list #显示当前行后面的源程序

list - #显示当前行前面的源程序

set listsize <count> #设置一次显示源代码的行数

show listsize #显示一次显示源代码的行数

list <first>,<last> #显示first到last之前的源代码

forward-search <regexp> #向前搜索

search <regexp> #向后搜索

file <fileName> #切换可执行文件(未确认)

list <fileName>:<lineNo> #切换源文件(未确认)

10.指定源文件的路径

directory(dir) <dirname...> #加一个源文件路径到当前路径的前面

directory #清除所有的自定义的源文件搜索路径信息

show directories #显示定义了的源文件搜索路径

11.源代码的内存

info <linenum> <filename>:<func> #显示源代码在内存中的地址

disassemble '文件名'::func #显示汇编代码

12.环境变量

set $varName=val #第一次创建时按照此方式进行,以后直接访问即可

13.寄存器

info registers #不包括浮点寄存器

info all-registers #包括浮点寄存器

info registers <regname...>

14.程序的跳转

jump <linespec> #跳转执行

jump <address>

return #强制函数返回

return <expr>

call <expr> #强制调用函数

15.堆栈

backtrace(bt) #查看所有堆栈

frame(f) #选中并查看某层堆栈
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息