12

我在仅限 linux 的 C++ 应用程序(根据QT 链接)中创建了一个 HUP 信号处理程序,并且正在使用 QT Creator 5.1。代码在 QT Creator 中编译并运行良好,但是当我从命令行发送 HUP 信号时,QT Creator 停止并弹出一个窗口:

“下级停止,因为它收到了来自操作系统的信号”以及 HUP 信号信息。

如果我单击调试面板上的 CONTINUE 按钮,我会在我的代码中看到我的 HUP 信号处理程序中的 qDebug 语句打印输出。我的问题是,这是正常行为吗?当我的代码正确处理 HUP 信号时,为什么 QT Creator 会捕获 HUP 并停止我的代码?

4

1 回答 1

19

只需在工具 -> 选项... -> 调试器 -> GDB 中取消选中“接收信号时显示消息框”框。

PS 当然,这仅涉及 Qt Creator 中的弹出窗口,但主要部分是调试器。如果您希望 gdb 不捕获信号而是将其传递给您的程序,您需要给 gdb 一个类似以下的命令:(handle SIGHUP pass nostop noprint请参阅 Window -> Views -> Debugger Log 或 Tools -> Options... -> Debugger -> Locals & Expressions -> Debugging Helper Customization(如下图的 SIGINT 信号)。

在此处输入图像描述

于 2013-10-23T09:27:20.380 回答