Come intervenire in o sopra una funzione in GDB

Come intervenire in o sopra una funzione in GDB
Il debug è un'abilità fondamentale che qualsiasi programmatore auto-identificato dovrebbe avere. Ci consente di visualizzare, rivedere e correggere errori nel nostro codice. Un potente strumento di debug è il debugger GNU, GDB in breve.

Questa guida cercherà di lavorare con GDB per entrare o sopra una funzione nel nostro codice.

Utilizzo di base GDB

Per illustrare questo, è possibile utilizzare il codice o utilizzare il campione fornito di seguito. Nell'esempio seguente, la funzione Loop ME contiene un ciclo che esamineremo con GDB.

#includere
void loopMe ()

per (int i = 0; i<5;i++)
printf ("i is %d \ n", i);


int main ()
int a = 10;
a += 10;
printf ("valore di a è %d", a);
loopMe ();
restituzione 0;

Compilare il codice con -G AS:

$ gcc -g loop.C -o Loop

Quindi, lancia il programma con GDB come:

$ GDB Loop

Una volta in GDB, possiamo eseguire il programma utilizzando il comando run o r. Puoi fermare il programma mentre è in esecuzione utilizzando il tasto CTRL + C.

Imposiamo un punto di interruzione sulla funzione principale per fermare l'esecuzione a quel punto. Nell'esempio sopra, ci fermiamo alla riga 10.

$ (GDB) Break Main

Breakpoint 1 a 0x555555555171: loop file.C, linea 10.

Per passare attraverso il programma riga per riga, puoi utilizzare il comando Next o N.

$ (GDB) Next
$ (GDB) n

Una volta arrivata alla funzione su cui si desidera lavorare, nell'esempio sopra, la funzione LoopMe (), puoi calpestarla usando il comando successivo.

Questo salterà la funzione e andrà direttamente restituire 0 come:

Puoi anche entrare nella funzione e lavorare su di essa usando il comando STEP o S. Ad esempio, per immettere la funzione LoopMe (), possiamo fare:

$ (GDB) Passaggio

Il comando entrerà nella funzione come:

Ora che siamo all'interno della funzione LoopMe (), possiamo passarci la riga per riga usando il comando successivo:

Come puoi vedere, passiamo attraverso il ciclo e vediamo come esegue il loop.

Conclusione

In questo rapido tutorial, abbiamo discusso del processo di utilizzo di GDB per passare o in una funzione durante il debug.