2009-10-20 8 views
6

Molte classi Qt utilizzano Pimpl, quindi sono molto opache al debugger di VS.Come posso vedere il contenuto degli oggetti Qt durante il debug?

Questo è fastidioso quando voglio controllare alcuni stati interni di Qt per vedere se il mio codice sta facendo male o se ho delle aspettative sbagliate su come stanno le cose.

Utilizzo il componente aggiuntivo Qt VS (1.1.0), ma non sembra essere di aiuto.

Qualche idea?

Aggiornamento

Il mio file autoexp.dat è pieno di roba Qt, ma non sono ancora in grado di guardare dentro le classi più pesanti (QWidget, QTcpSocket, ecc).

Posso vedere il contenuto delle classi più semplici, quindi l'autoexp.dat di seguito sembra funzionare, ma provare a guardare all'interno di un QWidget non funziona.

Update 2

Per qualche ragione, dopo aver letto i commenti e guardando più, funziona, e posso vedere la roba dei dati.

Non so cosa sia successo nel frattempo (quando ho appena lavorato e ignorato), ma ho avuto problemi nel vedere i dati prima.

Accetto la risposta "solo funziona", perché non riesco a eliminare una domanda generica e questa è la risposta più vicina disponibile. (I dati autoexp-dat sono abbastanza carini, utilizzando i dati già visibili se si scava)

+3

Che ne dici di passare a Qt Creator anziché a VS? :-) – ephemient

+0

È lo stesso problema con QtCreator, ma sì, dovresti provarci. –

+3

Non è lo stesso problema, Qt Creator aggiunge alcune macro debugger per 'gdb' al tuo eseguibile. Quindi sei in grado di vedere il contenuto di molti oggetti Qt. –

risposta

-1

È sicuramente possibile esaminare il pimpl quando Qt viene compilato con le informazioni di debug. Non sono sicuro di VS, ma con gdb è Just Works ™.

+0

Lo fa anche qui. Mi chiedo quale fosse il problema? Forse un cattivo stack o qualche corruzione quando ho provato a eseguire il debug in precedenza. Grazie per avermi fatto guardare di nuovo. :) – Macke

1

È necessario aggiungere dumper personalizzati per il debugger.

Ci sono quelli pre-costruiti per GDB. Potrebbe essere necessario eseguire il rollover per altri debugger, sebbene per lo studio visivo sia possibile ottenere facilmente dei risultati decenti modificando il file autoexp.dat. Ci sono molte risorse online su come modificare questo file.

+0

So di quel file. Non ero a conoscenza del fatto che potessi usarlo per fornire più informazioni di quelle che il debugger aveva già. Lo esaminerò. – Macke

+0

Giusto: non è possibile chiamare alcun metodo, ma molti oggetti Qt nascondono i dati interessanti, spesso dietro 'd' ptr, quindi è possibile mostrare quei dati. – Thomi

+0

Ma non è necessario aggiungere manualmente tutto il Qt a autoexp.dat? Questo è un po 'troppo lavoro al momento. ;) – Macke

3

Questo potrebbe aiutare http://daniel-albuschat.blogspot.com/2008/02/qt-debugging-with-visual-studio-2005.html

IIRC l'installazione di Qt per Windows include un file autoexp.dat -
correzione, è parte del l'qt-vs-addin

+0

Il link ha avuto un buon punto sull'esecuzione come amministratore su Vista, ma mi manca un po 'le classi più pesanti (QWidget, ecc.). Il mio autoexp.dat aveva già le cose da qt-vs-addin. Forse è qualcosa di sbagliato con i miei file di simboli per QT. – Macke

0

Sembra che si potrebbe essere fuori di fortuna.

Attualmente questa pagina ha l'elenco più completo delle macro per wariables QT che possono essere aggiunti al autoexp.dat: QT with Visual Studio 2008 (updated for Qt 4.5.2)

ActiveQt suoni anche promettente, ma potrebbe essere un po 'un peso inutile per voi.

Oltre a ciò, è necessario eseguire il rollover delle proprie espressioni o scrivere un Visual Studio Debugger Visualizer. (altro su CodeProject o MSDN)

Poiché non c'è nulla di simile, potrebbe essere una buona opportunità per lo sviluppo da zero.:)

Problemi correlati