1. nostop 接收到信号时,不要将它发送给程序,也不要停止程序。
2. stop 接受到信号时停止程序的执行,从而允许程序调试;显示一条表示已接受到信号的消息(禁止使用消息除外)
3. print 接受到信号时显示一条消息
4. noprint 接受到信号时不要显示消息(而且隐含着不停止程序运行)
5. pass 将信号发送给程序,从而允许你的程序去处理它、停止运行或采取别的动作。
6. nopass 停止程序运行,但不要将信号发送给程序。
例如,假定你截获SIGPIPE信号,以防止正在调试的程序接受到该信号,而且只要该信号一到达,就要求该序停止,并通知你。要完成这一任务,可利用如下命令:
(gdb) handle SIGPIPE stop print
请注意,UNIX的信号名总是采用大写字母!你可以用信号编号替代信号名
如果你的程序要执行任何信号处理操作,就需要能够测试其信号处理程序,为此,就需要一种能将信号发送给程序的简便方法,这就是signal命令的任务。该 命令的参数是一个数字或者一个名字,如SIGINT。假定你的程序已将一个专用的SIGINT(键盘输入,或CTRL-C;信号2)信号处理程序设置成采 取某个清理动作,要想测试该信号处理程序,你可以设置一个断点并使用如下命令:
(gdb) signal 2
continuing with signal SIGINT(2)
该程序继续执行,但是立即传输该信号,而且处理程序开始运行.
search text:该命令可显示在当前文件中包含text串的下一行。
Reverse-search text:该命令可以显示包含text 的前一行。
shell 命令可启动UNIX外壳,CTRL-D退出外壳,返回到 gdb.
为了允许使用历史命令,可使用 set history expansion on 命令
(gdb) set history expansion on
小结:常用的gdb命令
backtrace //显示程序中的当前位置和表示如何到达当前位置的栈跟踪(同义词:where)
breakpoint //在程序中设置一个断点
cd //改变当前工作目录
clear //删除刚才停止处的断点
commands //命中断点时,列出将要执行的命令 (#add相当于vs的when hit)
continue //从断点开始继续执行
delete //删除一个断点或监测点;也可与其他命令一起使用
display //程序停止时显示变量和表达时
down //下移栈帧,使得另一个函数成为当前函数
frame //选择下一条continue命令的帧
info //显示与该程序有关的各种信息
jump //在源程序中的另一点开始运行
kill //异常终止在gdb 控制下运行的程序
list //列出相应于正在执行的程序的原文件内容
next //执行下一个源程序行,从而执行其整体中的一个函数
print //显示变量或表达式的值
pwd //显示当前工作目录
ptype //显示一个数据结构(如一个结构或C++类)的内容
quit //退出gdb
reverse-search //在源文件中反向搜索正规表达式
run //执行该程序
search //在源文件中搜索正规表达式
set variable //给变量赋值
signal //将一个信号发送到正在运行的进程
step //执行下一个源程序行,必要时进入下一个函数
undisplay //display命令的反命令,不要显示表达式
until //结束当前循环
up //上移栈帧,使另一函数成为当前函数
watch //在程序中设置一个监测点(即数据断点)
whatis //显示变量或函数类型
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-40594-9.html
当年美苏也是这样在海上角逐了很久