2011-01-12 11 views
24

Ho cercato documentazione su questo e non ho trovato nulla. Ho installato MinGW e funziona benissimo. Non so come usare il debugger.Come si usa il debugger gdb MinGW per eseguire il debug di un programma C++ in Windows?

dato qualche semplice codice, dicono in un file chiamato "mycode.cpp":

int main() 
{ 
    int temp = 0; 

    for (int i = 0; i < 5; ++i) 
     temp += i; 

    return 0; 
} 

... come faccio a eseguire il debug di questo. Quali sono i comandi che uso per eseguire il debug del codice con MinGW e GDB in Windows? Posso passare attraverso il codice tramite la riga di comando come in Visual Studio? Se sì, quali comandi devo usare per farlo?

Esistono tutorial per l'utilizzo di GDB? Non sono riuscito a trovarne nessuno, ma se qualcuno potesse indirizzarmi a uno che sarebbe bello anche io. Sono stanco di scrivere tonnellate di istruzioni std::cout per eseguire il debug del codice complesso.

risposta

37

Il primo passo è quello di compilare il programma con -g per includere le informazioni di debug all'interno del file eseguibile:

g++ -g -o myprog.exe mycode.cpp 

Poi il programma può essere caricato in gdb:

gdb myprog.exe 

alcuni comandi per ottenere hai iniziato:

  • break main farà sì che il debugger si interrompa quando viene chiamato main. Puoi anche interrompere le linee di codice con break FILENAME:LINENO. Ad esempio, break mycode.cpp:4 interrompe l'esecuzione ogni volta che il programma raggiunge la riga 4 di mycode.cpp.
  • start avvia il programma. Nel tuo caso, devi impostare i punti di interruzione prima di avviare il programma perché esce rapidamente.

A un punto di interruzione:

  • print VARNAME. È così che si stampano i valori delle variabili, siano esse locali, statiche o globali. Ad esempio, nel ciclo for, è possibile digitare print temp per stampare il valore della variabile temp.
  • step Questo è equivalente a "passaggio in".
  • next o adv +1 Avanzamento alla riga successiva (come "passaggio sopra"). È inoltre possibile passare a una riga specifica di un file specifico con, ad esempio, adv mycode.cpp:8.
  • bt Stampa un backtrace. Questa è una traccia dello stack, essenzialmente.
  • continue Esattamente come un'operazione "continua" di un debugger visivo. Fa in modo che l'esecuzione del programma continui fino al prossimo punto di interruzione o alla chiusura del programma.

La cosa migliore da leggere è lo GDB users' manual.

+2

Ancora pochi comandi è necessario avere familiarità con: 'run',' CONTINUE, 'prossima ',' lista' e 'aiuto'. Quando tutto il resto fallisce, prova a usare 'help'. –

+0

Grazie. Esattamente quello di cui avevo bisogno. –

+0

ha provato 'g ++ -g helloworld.c', ha generato solo a.exe. Si suppone che generi altri file per facilitare il debugging con gdb. L'esecuzione di 'gdb a.exe' dà il messaggio:' non in formato eseguibile: formato di file non riconosciuto' e avvia '(gdb)' prompt dei comandi. L'esecuzione di '(gdb) break main' dà' Nessuna tabella dei simboli caricata. Usa il comando "file". L'esecuzione di '(gdb) start' dà lo stesso' Nessuna tabella dei simboli caricata. Usa il comando "file". Che cosa sto sbagliando? – Mahesha999

Problemi correlati