【问题标题】:qt creator stops on Linux signalqt creator 在 Linux 信号上停止
【发布时间】:2025-12-20 06:05:15
【问题描述】:

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

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

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

【问题讨论】:

  • 也许 Qt Creator 不喜欢从盒子外面来的东西,直接从控制台而不是 Qt 试试你的应用程序
  • 是的 - 没问题。我希望 QT Creator 中有一个设置让它忽略信号......
  • IIRC 不是 Qt Creator,而是调试器。

标签: linux qt signals qt-creator


【解决方案1】:

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

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

【讨论】: