1、问题描述
使用QtCreator调试终端程序时,因为收到信号SIGSTOP 而退出,无法调试程序。
2、解决方法
解决方式是,设置GDB不处理SIGSTOP ,
在QtCreator中进入GDB命令设置窗口:
Tools -> Options -> Debugger -> GDB -> Additional Startup Command
在 Additional Startup Command 中添加如下内容:
handle SIGSTOP nostop pass
参考网址:https://bugreports.qt.io/browse/QTCREATORBUG-25082
3、扩展:GDB handle命令详解
handle 命令的语法格式如下:
(gdb) handle signal mode
其中,signal 参数表示要设定的目标信号,它通常为某个信号的全名(SIGINT)或者简称(去除‘SIG’后的部分,如 INT);如果要指定所有信号,可以用 all 表示。
mode 参数用于明确 GDB 处理该目标信息的方式,其值可以是如下几个:
nostop:当信号发生时,GDB 不会暂停程序,其可以继续执行,但会打印出一条提示信息,告诉我们信号已经发生;
stop:当信号发生时,GDB 会暂停程序执行。
noprint:当信号发生时,GDB 不会打印出任何提示信息;
print:当信号发生时,GDB 会打印出必要的提示信息;
nopass(或者 ignore):GDB 捕获目标信号的同时,不允许程序自行处理该信号;
pass(或者 noignore):GDB 调试在捕获目标信号的同时,也允许程序自动处理该信号。