2013-10-16 17 views
5

Ho creato un gestore di segnale HUP in solo app C++ linux (come da QT link) e sto lavorando in QT Creator 5.1. Il codice compila e funziona bene in Qt Creator, ma quando mando il segnale HUP da una riga di comando, Qt Creator si ferma con un popup:Il creatore qt si ferma sul segnale Linux

"L'inferiore fermato perché ha ricevuto un segnale dal sistema operativo" lungo con informazioni sul segnale HUP.

Se faccio clic sul pulsante CONTINUA sul pannello di debug, vedo la mia dichiarazione di istruzioni qDebug dal mio gestore di segnale HUP nel mio codice. La mia domanda è, è questo comportamento normale? Perché QT Creator intrappola HUP e interrompe il mio codice, quando il mio codice gestisce correttamente il segnale HUP?

+0

Forse Qt Creator non è come roba proveniente dall'esterno della scatola, provare l'applicazione direttamente da una console e non da Qt –

+0

sì - che funziona bene. Speravo che ci fosse un'impostazione da qualche parte in QT Creator che facesse ignorare i segnali ... – TSG

+0

IIRC non è Qt Creator, ma lo fa il debugger. –

risposta

8

Basta deselezionare la casella "Mostra una finestra di messaggio quando si riceve un segnale" in Strumenti -> Opzioni ... -> Debugger -> GDB.

P.S. Ovviamente ciò riguarda solo una finestra popup in Qt Creator, ma la parte principale è un debugger. Se vuoi che gdb non catturi un segnale ma lo passi al tuo programma, devi dare a gdb un comando come il seguente: handle SIGHUP pass nostop noprint (vedi Finestra -> Viste -> Registro debugger o Strumenti -> Opzioni ... -> Debugger - > GDB -> script di avvio GDB Debug di personalizzazione dell'helper (come l'immagine sotto per il segnale SIGINT)).

enter image description here

+0

l'ho perso prima, ma sembra giusto – TSG