2010-06-08 13 views
19

Il creatore Qt può creare ed eseguire perfettamente i miei progetti, ma salterà direttamente su qualsiasi punto di interruzione impostato. Non riesco a trovare alcuna opzione per risolvere il problema e apprezzerei un po 'di aiuto.Perché i miei punti di interruzione non funzionano in Qt Creator

MODIFICA: l'SDK è costruito in modalità di debug e la configurazione del progetto è impostata per il debug.

+1

Guarda la finestra della console gdb, forse gdb si lamenta di qualcosa durante il caricamento della tua app. – Eugene

+0

Non ho ricevuto messaggi imprevisti durante la creazione dal prompt dei comandi. – CoutPotato

+0

No, quando nel creatore, quando avvii l'app sotto il debugger, dovrebbe passare al pannello di debug. Lì puoi mostrare la console gdb (è nascosta di default, penso, controlla i menu). gdb stampa un sacco di cose lì (dll caricati e così via) – Eugene

risposta

7

Qt Creator ha due modalità di esecuzione dell'app: "run" e "debug". Penso che tu possa essere confuso su cosa significano:

  • Esegui: avvia il programma, esattamente come nel doppio clic sull'eseguibile.
  • Debug: avviare il debugger, collegarlo all'eseguibile ed eseguire l'eseguibile tramite il debugger. Questo registra tutti i passaggi (chiamate di funzione, ecc.) Del programma, inclusi i punti di interruzione.

In breve: quando è necessario capire un valore interno durante l'esecuzione del programma e/o hanno stabilito punti di interruzione, utilizzare Debug. Per qualsiasi altra cosa, basta eseguirlo, che è molto più veloce.

+2

In QtCreator 2.3.0, per passare da "release" (non arresta il debugger ai punti di interruzione) a "debug" è necessario fare clic sull'icona del progetto -> quindi fare clic sul build pull down -> quindi dovresti vedere "release" e " debug "-> fai clic su" debug ". L'icona del progetto si trova in basso a sinistra sopra le icone della GUI del progetto. –

+1

Se non si modifica il progetto in "debug", il debugger salterà sempre i punti di interruzione. Assicurati anche di pulire dopo aver cambiato in "debug". –

+2

Mentre quanto sopra è molto vero, non risponde alla domanda immediata - assumendo che l'esecuzione sia stata eseguita correttamente in modalità debug e con la sessione di debug, ci sono comunque casi in cui GDB (ma più spesso CDB) non si ferma sui punti di interruzione. di solito questo accade dopo aver provato a sincronizzare il debugger con il processo senza successo. Sfortunatamente, non riesco ancora a capire perché questo accada e solo in alcune occasioni. – Adi

3

Spero che questo aiuti qualcuno che ha lo stesso problema. Anche ho impostato la modalità di debug, ma i file di output è stato messo in cartella stampa, quando ho guardato il mio file .pro, ho trovato questa linea

CONFIG += qt warn_on release rtti exceptions 

Poi tolgo "rilascio", quindi ha funzionato. Spero che questo aiuti.

4

è necessario aggiungere nel file di .pro riga successiva:

CONFIG  += debug 

e può essere necessario eliminare questo:

CONFIG  += release 
19

Se si tratta di una build CMake, è necessario impostare la costruire tipo prima impostare il progetto, in modo ad esempio nel CMakeList.txt top:

SET(CMAKE_BUILD_TYPE Debug) 
project(mybuildtype) 

Ufficialmente, è possibile passare questo anche a cmake nella sezione Progetti quando si esegue cmake: http://qt-project.org/forums/viewthread/12694, quindi con -DCMAKE_BUILD_TYPE = Flag di debug, ma questo non sembra funzionare più ... Se si desidera che una bandiera funzioni, è necessario prova su di esso prima di impostare il progetto, vedi http://www.cmake.org/pipermail/cmake/2008-September/023808.html

Problemi correlati