GDB sta per GNU Project Debugger ed è un potente strumento di debug per C (insieme ad altri linguaggi come C++). Ti aiuta a curiosare all'interno dei tuoi programmi C mentre sono in esecuzione e ti consente anche di vedere cosa succede esattamente quando il tuo programma si blocca. GDB opera su file eseguibili che sono file binari prodotti dal processo di compilazione.
A scopo dimostrativo, l'esempio seguente viene eseguito su una macchina Linux con le specifiche seguenti.
uname -a>

uname -a
Impariamo facendo: –
Avvia GDB
Vai al prompt dei comandi di Linux e digita gdb.
gdb>
gdb
formato stringa Java lungo
Il prompt di apertura di Gdb ti informa che è pronto per i comandi. Per uscire da gdb, digitare quit o q.

Abbandonare
Compila il codice
Di seguito è riportato un programma che mostra un comportamento indefinito se compilato utilizzando C99.
Nota: Se un oggetto con durata di archiviazione automatica non viene inizializzato in modo esplicito, il suo valore è indeterminato, dove il valore indeterminato è un valore non specificato o una rappresentazione trap.
Ora compila il codice. (qui test.c). bandiera G significa che puoi vedere i nomi propri delle variabili e delle funzioni nei tuoi stack frame, ottenere i numeri di riga e vedere il sorgente mentre ti muovi nell'eseguibile. -std=indicatore C99 implica utilizzare lo standard C99 per compilare il codice. -o bandiera scrive l'output della compilazione in un file di output.
gcc -std=c99 -g -o test test.C>
gcc -std=c99 -g -o prova prova.C
Esegui GDB con l'eseguibile generato
Digita il seguente comando per avviare GDB con l'eseguibile compilato.
gdb ./test>
gdb ./prova
Comandi GDB utili:
Ecco alcuni comandi utili per iniziare con GDB.
Comando | Descrizione |
---|---|
corri o r | Esegue il programma dall'inizio alla fine. |
rompere o b | Imposta un punto di interruzione su una riga particolare. |
disattivare | Disabilita un punto di interruzione |
abilitare | Abilita un punto di interruzione disabilitato. |
successivo o n | Esegue la riga di codice successiva senza immergersi nelle funzioni. |
fare un passo | Passa all'istruzione successiva, immergendosi nella funzione. |
elenco o l | Visualizza il codice. |
stampa o pag | Visualizza il valore di una variabile. |
uscire o q | Esce da GDB. |
chiaro | Cancella tutti i punti di interruzione. |
Continua | Continua l'esecuzione normale |
Visualizza il codice
Ora digita l al prompt di gdb per visualizzare il codice.

Visualizza il codice
Imposta un punto di interruzione
Introduciamo un punto di interruzione, diciamo la riga 5.

Imposta un punto di interruzione
Se vuoi inserire un punto di interruzione su righe diverse, puoi digitare b numero_riga .Per impostazione predefinita, l'elenco o l visualizza solo le prime 10 righe.
Visualizza punti di interruzione
Per vedere i punti di interruzione, digitare info b.

Visualizza punti di interruzione
Disabilitare un punto di interruzione
Dopo aver fatto quanto sopra, diciamo che hai cambiato idea e vuoi tornare indietro. Digitare disabilita b.

Disabilitare un punto di interruzione
Riabilitare un punto di interruzione disabilitato
Come indicato nel cerchio blu, Enb diventa n per disabilitato. 9. Per riattivare il recente punto di interruzione disabilitato. Digitare abilita b.

Riabilitare un punto di interruzione disabilitato
Esegui il codice
Esegui il codice digitando run o r. Se non hai impostato alcun punto di interruzione, il comando run eseguirà semplicemente il programma completo.

Esegui il codice
vice commissario di polizia
Stampa i valori delle variabili
Per vedere il valore della variabile, digitare print nome_variabile o pag nome_variabile .

Stampa i valori delle variabili
Quanto sopra mostra i valori memorizzati in x al momento dell'esecuzione.
Modificare i valori delle variabili
Per modificare il valore della variabile in gdb e continuare l'esecuzione con il valore modificato, digitare set nome_variabile .
Uscita di debug
Lo screenshot qui sotto mostra i valori delle variabili da cui è abbastanza comprensibile il motivo per cui abbiamo ottenuto come output un valore spazzatura. Ad ogni esecuzione di . /test riceveremo un output diverso.
Esercizio: prova a utilizzare set x = 0 in gdb alla prima esecuzione e guarda l'output di c.
Uscita di debug
GDB offre molti altri modi per eseguire il debug e comprendere il tuo codice come esaminare stack, memoria, thread, manipolare il programma, ecc. Spero che l'esempio sopra ti aiuti a iniziare con gdb.
Conclusione
In questo articolo abbiamo discusso di GDB (GNU Debugger) che è un potente strumento in Linux utilizzato per il debug dei programmi C. Abbiamo discusso alcuni dei seguenti passaggi in modo da poter compilare il codice con informazioni di debug, eseguire GDB, impostare punti di interruzione, esaminare variabili e analizzare il comportamento del programma. Abbiamo anche discusso le funzionalità di GDB, come l'esame del codice, la gestione dei punti di interruzione, la manipolazione delle variabili e il controllo dell'esecuzione del programma che ci consentono di eseguire il debug e la risoluzione dei problemi in modo efficiente.