linux - qt creator 在 Linux 信号上停止

标签 linux qt signals qt-creator

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

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

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

最佳答案

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

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

enter image description here

关于linux - qt creator 在 Linux 信号上停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19409573/

相关文章:

linux - Ubuntu 14.04上Hadoop多节点集群手动安装

c++ - 如何只执行qgraphicsitem的mouseevent? (忽略 qgraphicsview 的其余 mousevent)

c - 在信号处理程序中访问长整数

c - 处理信号时分配内存的最佳方法是什么?

go - 是否可以只记录收到的每个信号而不改变行为?

linux - 对于每一行输入,将该行与输出一起发出,将其传递给命令

Android - 读取 "device attribute"失败并出现错误 "invalid length"

c++ - 在鼠标事件期间更改 QWidget Parent

linux - 如何在 Ubuntu 中将 mongodb(从 tar.gz 中提取)作为服务运行?

macos - 基于 MAC 10.7.4 构建的 Qt 应用程序无法在 10.6 上运行