2013-10-16 36 views
5

我已經在linux中創建了一個HUP信號處理程序,只有C++應用程序(根據QT link),並且正在QT Creator 5.1中工作。代碼編譯和Qt Creator中運行正常,但是當我在命令行發送HUP信號,Qt Creator的一個彈出對話框,停止:qt創建者停止在Linux信號上

「的劣質停止,因爲它從操作系統接收到信號」沿與HUP信號信息。

如果我單擊調試面板上的CONTINUE按鈕,我會看到我的代碼中從我的HUP信號處理程序打印輸出的qDebug語句。我的問題是,這是正常的行爲?當我的代碼正確處理HUP信號時,爲什麼QT Creator會捕獲HUP並停止我的代碼?

+0

也許Qt Creator的是不喜歡的東西從包裝盒外面來,直接從控制檯試試你的應用程序,而不是從Qt的 –

+0

是的 - 這工作正常。我希望在QT Creator中有一個設置讓它忽略信號...... – TSG

+0

IIRC它不是Qt Creator,而是調試器。 –

回答

8

只需在工具 - >選項... - >調試器 - > GDB中取消選中「接收信號時顯示消息框」框。

P.S.當然,這隻涉及Qt Creator中的彈出窗口,但主要部分是調試器。如果你想用gdb沒有趕上信號,但它傳遞給你的程序,你需要給GDB類似下面的命令:handle SIGHUP pass nostop noprint(見窗口 - >查看 - >調試日誌或工具 - >選項 - >調試 - > GDB - > GDB啓動腳本 調試幫助程序自定義(如下圖所示的SIGINT信號))。

enter image description here

+0

我錯過了,但看起來不錯 – TSG