2013-10-04 9 views
5

Non ho mai usato un debugger ed è giunto il momento di provarlo. MinGW sembra venire con GDB che stavo cercando di usare. Supposdly esecuzione gdb dalla riga di comando e digitando run myprog.exe avvia il debugger, ma quando faccio questo ottengoCome si esegue il debug di un programma C su Windows?

Avvio programma: C: \ MinGW \ bin \ mioprog.exe mioprog.exe [Nuovo 1828.0xd8c Discussione] apertura errore file. [Inferiore 1 (processo 1828) chiuso con codice 02]

Come procedere o cosa è un modo più semplice?

In particolare sto cercando di scovare un comportamento indefinito.

risposta

1

Bene, il modo più semplice sarebbe utilizzare un IDE, in realtà. Puoi provare a dare il code::blocks - molto facile da usare, configura tutto per te durante l'installazione (assicurati di scegliere un compilatore - non preoccuparti, ti verrà richiesto) e lì, sei tutto pronto e pronto andare. Poiché è multipiattaforma, in realtà non ti blocca nemmeno in Windows, e ti offre possibilità di debug grafico molto potenti (e, suppongo più importanti, convenienti).

+0

Sto usando il codice e in base a questo video di YouTube ho bisogno di aggiungere un file a un progetto prima di utilizzare un debugger su di esso. Ho un file ma nessun progetto, come posso aggiungerlo a un progetto? http://www.youtube.com/watch?v=6CGH9Z19dS8 – Celeritas

2

Poiché il programma termina, è necessario impostare un punto di interruzione per vedere qualsiasi cosa. Prova break main prima della linea di partenza. Quindi è possibile eseguire i comandi linea next (riga successiva), step (passaggio in/out delle chiamate di funzione), print expression (dove espressione può essere un nome di variabile o una funzione chiamata o un calcolo), display expression (uguale alla stampa, ma stampa appena prima di ogni prompt). In qualsiasi momento è possibile digitare backtrace per ottenere uno stack di chiamate. È anche possibile digitare up e down per spostarsi verso l'alto del callstack, quindi è possibile stampare variabili locali superiori.

+1

Invece di 'break', usa il comando' start' al posto di 'run'. – wallyk

1

passare il binario con gdb

gdb <binary> 

quindi impostare breakpoint alla principale

gdb) break main 

Quindi eseguire il programma in gdb

gdb) run 

poi pausa colpi punto di usare 'n' o 'next' per passare a diverse linee

gdb) n 

Usa 's' per entrare in funzione e la stampa 'p' valore var

Esempio:

gdb) s <fun_name> 
gdb) p x 
0

vorrei suggerire, come un principiante iniziare con Visual Studio. Ha un debugger molto buono e facile da usare. Basta creare un punto di interruzione nella linea da cui si desidera avviare il debug (fare clic sulla barra a sinistra accanto alla linea o fare clic con il pulsante destro del mouse e creare un punto di interruzione). Una volta impostati i punti di interruzione, è sufficiente eseguire il programma in modalità di debug e l'esecuzione del programma si arresterà nel punto in cui è stata creata la pausa.

A questo punto dovresti essere in grado di visualizzare tutte le informazioni importanti sull'esecuzione del programma. È possibile utilizzare F10 per continuare il passaggio di esecuzione o F11 per passare all'interno dell'albero di esecuzione.

Il debugger come molte altre funzionalità avanzate come interruzione in condizione, hit count ecc. Ma è possibile iniziare con la sua funzionalità di base.

+0

Suggerirei che i principianti evitassero lo studio visivo come la peste. È il peggior debugger e ambiente di sviluppo che abbia mai visto in tutta la mia vita. I file si bloccano costantemente (cosa di Windows), i file di progetto sono un incubo da gestire, scivola automaticamente dentro e fuori dalla modalità nativa e da altre modalità che ti impediscono di raggiungere i punti di interruzione, devi avere dll e file pdb per il debug, l'analisi dei file core è appena rotto, Windows ha un heap tollerante ai guasti per nascondere i crash da te per far sembrare più affidabile di quello che realmente è, la documentazione è allucinante, le funzioni sono di proprietà ecc. – Owl