Italiano English
Modifica History Actions

Differenze per "gdb"

Differenze tra le versioni 1 e 4 (in 3 versioni)
Versione 1 del 2008-03-25 15:32:48
Dimensione: 382
Autore: ZioPRoTo
Commento:
Versione 4 del 2010-09-15 13:00:21
Dimensione: 1373
Autore: ZioPRoTo
Commento:
Le cancellazioni sono segnalate in questo modo. Le aggiunte sono segnalate in questo modo.
Linea 3: Linea 3:
In questa pagina di Wiki scrivo quelle cose che dimentico sempre quando mi serve di usare gdb :) Happy debugging :) 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.
Linea 17: Linea 21:
Prima di eseguire il debug può essere utile specificare dei breakpoints

{{{
break nomefile:riga
}}}

Fatto questo mandiamo in esecuzione:
Linea 20: Linea 32:

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}}}

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

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