GDB 信号处理 Signals Handle

1、信号 Signals:
信号是一种软中断,应用程序一般都会处理信号,如程序异常退出等会发出信号
UNIX下的部分信号:

SIGINT 表示中断字符信号,也就是Ctrl+C的信号
SIGBUS 表示硬件故障的信号
SIGCHLD 表示子进程状态改变信号
SIGKILL 表示终止程序运行的信号

2、GDB中处理信号:
GDB调试器可以自动捕获C、C++程序中出现的信号,并根据事先约定好的方式处理它,默认收到任何信号都会停住正在运行的程序,以供你进行调试

2.1、控制GDB收到信号的处理方式:
handle :配置收到指定信号的处理方式

可以是以下几种关键字的一个或多个:

nostop 当信号发生时,GDB不会停住程序的运行,但会打出消息告诉你收到这种信号
stop 当信号发生时,GDB会暂停程序执行
print 当信号发生时,GDB会打印出必要的提示信息
noprint 当信号发生时,GDB不会打印出任何提示信息
nopass/ignore GDB捕获目标信号的同时,不允许程序自行处理该信号
pass/noignore GDB调试在捕获目标信号的同时,也允许程序自动处理该信号

2.2、信号处理常用命令:

handle SIG32 noprint nostop 遇到SIG32不停止不打印,从而不影响GDB过程
info signals 查看GDB可以处理的信号种类,以及各个信号的具体处理方式
info handle 查看有哪些信号在被GDB检测中

3、用法:
1、使用handle SIG32 noprint nostop忽略系统信号,让GDB只停在我们自己的断点处。

参考资料:GDB handle命令:信号处理

你可能感兴趣的:(GDB用法)