在gdb调试程序时,默认情况下gdb在收到信号时会中断程序的运行,并将收到的信号显示出来。这时,可以选择输入 c (continue)让程序继续运行。如果程序会重复收到这信号,会非常影响调试效率。可以通过配置忽略指定的系统信号。

查看当前系统信号的处理信息的指令如下。

(gdb) info signal

以调试网络程序为例,进程会经常收到 SIGPIPE 消息,对于网络进程的 SIGPIPE 消息在程序中会由自身处理,可以使用以下指令让gdb不再提示 SIGPIPE 信号。

(gdb) handle SIGPIPE nostop noprint

其中, nostop 表示在收到信号时不再中断程序的运行, noprint 表示在收到信号时不再将收到的信号打印到gdb调试界面,这两个参数可以分开使用。

参考资料: gnu gdb manual

(全文完)