logo

GDB (Introduzione passo dopo passo)

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>
il tuo nome

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.

esci_gdb

Abbandonare

Compila il codice

Di seguito è riportato un programma che mostra un comportamento indefinito se compilato utilizzando C99. elenco-1



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.

punto di rottura

Visualizza il codice

Imposta un punto di interruzione

Introduciamo un punto di interruzione, diciamo la riga 5.

informazioni_b

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.

disattivare

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.

abilita-1

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.

prima corsa

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.

stampa_valore_x

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.