Italiano English
Edit History Actions

gdb

Note su GDB

In questa pagina di Wiki ci sono appunti disordinati su gdb :) Happy debugging :)

Installare GDB

Meglio installare cgdb, che mentre usate il debug vi fa vedere il codice splittando la shell a metà. Poi è tutto uguale solo che dovete lanciare cgdb invece di gdb.

Compilare

Usate sempre l'opzione -g nelle vostre CFLAGS se poi volete usare gdb per fare il debug

Lanciare il programma

gdb --args file argomento1 argomento2 argomento3

Esecuzione

Prima di eseguire il debug può essere utile specificare dei breakpoints

break nomefile:riga

di default gdb si fermera' a qualsiasi segnale. Se vogliamo ad esempio ignorare SIGPIPE facciamo

handle SIGPIPE nostop

Fatto questo mandiamo in esecuzione:

run

Se vogliamo mettere un breakpoint condizionale, ad esempio dopo primo primo break

condition 1 Scheduler::instance().clock() > 20

dove 1 è il numero del breakpoint e Scheduler::instance().clock() è il nome della variabile

A questo punto gdb si ferma al primo breakpoint che abbiamo impostato oppure al primo problema che incontra

  • Per andare avanti usiamo il comando next

  • Per entrare dentro una funzione usiamo step

  • Per vedere qualche è il problema usiamo backtrace

  • Per stampare il contenuto di una variabile usiamo print nomevar

  • Per far continuare l'esecuzione regolare del programma usiamo continue