GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Come utilizzare GDB per eseguire il debug di programmi in Ubuntu 20.04

GNU Debugger (GDB) è un debugger open source per GNU Systems. Il debugger è portatile e può essere utilizzato per più linguaggi come C/C++ e Fortran. Può essere utilizzato per il debug dei programmi osservando i loro stati su punti di interruzione specifici e persino alterando il flusso oi valori per un'ulteriore esecuzione. Di solito, il GDB viene eseguito nella riga di comando, ma sono state sviluppate anche diverse GUI.

In questo articolo, esploriamo come eseguire il debug dei programmi C utilizzando GDB in Ubuntu 20.04 LTS (Focal Fossa).

Prerequisiti

  • Sistema Ubuntu 20.04
  • Utente con privilegi sudo per rinominare più file.

Nota: I comandi discussi in questo articolo sono stati testati su Ubuntu 20.04 LTS (Fossa focale).

Installazione dei pacchetti

Installare i pacchetti GN prerequisiti per la compilazione e il debug. Esegui il seguente comando nel terminale:

$ sudo apt install gcc gdb -y

Esempio di programma C per il debug

Codice

Prima dell'esecuzione, è necessario compilare un programma. Compileremo il seguente codice C nel file main.c .

#include <stdio.h>

int main() {

for (int i=0; i<5; ++i) {
printf("Iterator: %d\n", i);
}
return 0;
}

Compila il programma C utilizzando GCC

Di solito, un codice C viene compilato in GCC usando il seguente comando:

$ gcc main.c -o bin

È necessario fornire un altro argomento per includere simboli nel binario. Questi simboli sono usati da GDB per tracciare ed eseguire il debug del programma. Esegui il seguente comando nel terminale per compilare il codice C:

$ gcc -g main.c -o bin

Un file eseguibile chiamato bin apparirà.

Esegui il programma di test

Il file binario denominato bin può essere eseguito come qualsiasi altro file eseguibile su un'interfaccia a riga di comando. Usa il seguente comando per eseguirlo nel terminale:

$ ./bin

Apparirà l'output del codice.

Debug di un'applicazione su Linux

Avvia debugger

Esegui l'utilità GDB usando il seguente comando nel terminale:

$ gdb bin

Premi invio. Apparirà la console per il terminale GDB. Entra nella corsa comando in questa console per eseguire l'eseguibile fornito all'utilità come argomento.

(gdb) run

Debug dei punti di interruzione

Aggiungi punti di interruzione

I punti di interruzione possono essere aggiunti in diversi modi. Aggiungeremo un punto di interruzione su printf funzione nel nostro codice. Esegui il seguente comando nel terminale per aggiungere un punto di interruzione:

(gdb) break printf

In alternativa, è possibile utilizzare anche un numero di riga per aggiungere un punto di interruzione.

(gdb) break 6

Entra nella corsa comando e il programma si fermerà al punto di interruzione.

Scorri i punti di interruzione

Usa il comando continua per continuare l'esecuzione del programma.

(gdb) continue

Ci sono altri due comandi per scopi diversi di continuare l'esecuzione del programma:

  • Passo:passa attraverso l'istruzione macchina successiva.
  • Avanti:passa alla riga di codice successiva.

Possono essere utilizzate anche abbreviazioni di comandi. Come abbreviazione di continua il comando è c.

(gdb) c

Informazioni sui punti di interruzione

Le informazioni sui punti di interruzione possono essere osservate utilizzando info comando di gdb . Esegui il seguente comando dal terminale:

(gdb) info breakpoints

Appariranno le informazioni sui punti di interruzione.

Nota:il numero a sinistra del punto di interruzione viene utilizzato per fare riferimento ad esso da altri comandi.

Elimina punti di interruzione

Un punto di interruzione può essere eliminato utilizzando elimina comando e facendo riferimento al numero di punto di interruzione osservato nell'output di info utilità.

(gdb) delete 1

Ora il punto di interruzione è stato cancellato e, se eseguito, il programma verrà eseguito fino alla fine.

Variabili di visualizzazione

Le variabili possono essere osservate utilizzando l'utility watch. Innanzitutto, dobbiamo inserire l'ambito in cui esiste la variabile. A tale scopo, aggiungi prima un punto di interruzione utilizzando il seguente comando:

(gdb) break 6

Quindi esegui il codice che raggiunge questo punto di interruzione.

(gdb) r

Ora siamo nel ciclo in cui la variabile i esiste.

L'orologio il comando verrà utilizzato per osservare il valore precedente e nuovo della variabile i nel ciclo.

(gdb) watch i

Ora il punto di interruzione generato da watch il comando apparirà anche nell'elenco dei punti di interruzione. L'elenco dei punti di interruzione può essere visualizzato utilizzando il seguente comando:

(gdb) info breakpoints

Inoltre, non abbiamo bisogno del punto di interruzione inserito in precedenza. Può essere facilmente rimosso utilizzando il seguente comando:

(gdb) delete 1

Ora, se continua, il codice visualizzerà i valori ogni volta che la variabile ha modificato il valore e mostrerà sia i valori vecchi che quelli nuovi.

(gdb) c

Si possono osservare anche ulteriori iterazioni del programma, usando lo stesso comando.

Chiudi Debugger

Esegui il seguente comando nel terminale per uscire dal debugger.

(gdb) quit

Questo chiude gdb apparirà l'utilità e il prompt della riga di comando predefinito.

Conclusione

In questo articolo, abbiamo esplorato come eseguire e interrompere un programma in GDB. Inoltre, è stato configurato anche per interrompersi quando il valore di una variabile è cambiato. Ci auguriamo che tu possa eseguire facilmente il debug dei tuoi programmi in GDB dopo aver seguito questo articolo.


Ubuntu
  1. Come utilizzare il comando di arresto di Linux in Ubuntu 18.04 e CentOS 7

  2. Come eseguire il debug di programmi C in Linux usando gdb

  3. Come utilizzare il comando Uptime in Ubuntu Linux

  4. Come usare ssh-keyscan su Ubuntu

  5. Come usare ssh-agent su Ubuntu

Come usare il comando cd in Linux

Come installare e utilizzare il comando Curl su Ubuntu 20.04

Come utilizzare il comando tcpdump in Ubuntu 20.04

Come installare e utilizzare Busybox in Ubuntu

Come usare Ubuntu

Come installare e utilizzare il comando Exa su Ubuntu 20.04