2011-01-18 8 views
7

Sto scrivendo un programma che fa ampio uso di vettori e sto sviluppando con Qt Creator 2.0.1 su Mac OS X 10.6.6 per la prima volta.Come faccio a fare in modo che il debugger di Qt Creator mostri il contenuto dei vettori C++ in OS X?

Come io sono il debug, posso vedere letterali e array bene in finestra Locals and Watchers, ma non appena vado per espandere un vettore, in questo caso di tipo Student, ottengo questo albero:

alt text

L'altra persona con cui sto lavorando usa la stessa versione di Qt Creator su Ubuntu e può vedere bene il contenuto dei vettori. Che cosa sto facendo di sbagliato?

questo è il suo debugger:

alt text

risposta

8

QtCreator 2.6 supporta il supporto Mac FSF GDB (7.5). FSD GDB supporta python che consente a qtcreator di visualizzare correttamente QVector, QSet, QList, QString, ecc. Può essere scaricato da macports.

  1. scaricare e installare MacPorts (scaricarlo da qui http://www.macports.org/install.php)
  2. Per installare FSF GDB 7.5:

     sudo port install gdb 
    
  3. danno il permesso FSF GDB per il debug delle applicazioni:

    sudo codesign -s gdb-cert /opt/local/bin/ggdb 
    

    Se gdb-cert non viene trovato, crea un gdb-cert facendo clic sul link sottostante e segui le istruzioni per " Creazione di un certificato ":

    http://sourceware.org/gdb/wiki/BuildingOnDarwin

    Se non si dà il permesso di ggdb, si otterrà una:

    Unable to find Mach task port for process-id 28885: (os/kern) failure (0x5). 
    (please check gdb is codesigned - see taskgated(8)) 
    
  4. Modificare il debugger kit in QtCreator enter image description here

    Cambia il percorso da/usr/bin/gdb a/opt/local/bin/ggdb

  5. Per impostazione predefinita, GDB di FSF non riesce a gestire correttamente i breakpoint poiché mac clang ++ non esporta i simboli di debug. Per esportare i simboli di debug, dsymutil deve essere eseguito manualmente.Fortunatamente, il comando dismutil può essere eseguito automaticamente dopo aver collegato il programma usando qmake. Aggiungere le seguenti righe nel file .pro:

    macx { 
        CONFIG(debug, debug|release) { 
         QMAKE_POST_LINK = dsymutil \"MyApp.app/Contents/MacOS/MyApp\" 
        } 
    } 
    
+0

Questo mi ha risolto completamente il problema. Grazie mille. – David

+0

Grazie mille! A proposito, il passaggio 5 non era necessario per me. Forse, l'hanno risolto? –

3

È necessario costruire l'helper di debug. Dovrebbe essere sotto Strumenti -> Opzioni ...

Una volta creato l'helper di debug, è possibile visualizzare anche std :: string, QString e contenitori.

Ci dovrebbe essere un pulsante di ricostruzione nello stesso posto in cui si sceglie quale versione di Qt usare.

http://www.qtcentre.org/threads/31862-quot-No-valid-Qt-version-set.-Set-one-in-Tools-Options-quot-Windows-QtCreator

+0

Non sono le stringhe sto avendo problemi con, è std :: vettori. Riesco a vedere stringhe, interi, caratteri e array. Inoltre, la ricostruzione non ha aiutato; grazie per il suggerimento, però. – DanBlakemore

0

Le due risposte sono sorta di diritto: non si può utilizzare gli assistenti di debug basate pitone su Mac, ancora non v'è una versione C++ di esso che funziona con gdb di Apple.

Problemi correlati