$ gcc -g titi.c -o titi
$ gdb titi core
(gdb)
.
(gdb) b tutu
b
veut dire breakpoint. GDB me répond :
Breakpoint 1 at 0x80de41c: file titi.c, line 1309.
(gdb) b titi.c:134
(gdb) r
r
veut dire run, d'ailleurs run
marche aussi.
On peut aussi taper r bibi
pour donner en argument à
titi la chaine `bibi' (ex : nom de fichier). GDB me répond :
Starting program: /home/benoit/src/titi bibi
n
ou next
et pour entrer dans les sous-functions, on fait un
step
ou s
. Après on peut taper sur
[Enter]
: ça répète la dernière commande.
(gdb) n
1350 if (Array1[i]!=i)
(gdb) print i
p i
car p
veut dire print. GDB me répond :
$1 = 6
$1
veut dire que c'est la première fois
que j'invoque `i' ...qui est égal à 6. Je peux imprimer la valeur de
TralalaBibapelOula en tapant seulement p Trala[tab]
et gdb complète automatiquement
ou me propose la liste des variables qui commencent par Trala...
Je liste la fonction bibi pour me souvenir ce que cela fait :
(gdb) l bibi
(gdb) l bibi,141
l+
ou l +
pour dire
"liste m'en plus". Et du coup GDB continue par paquet de dix lignes.
Bon, continuons l'execution avec la commande continue
ou c
.
(gdb) c
Continuing.
[Ctrl-c]
.
(gdb) n
X
(gdb) bt
bt
veut dire `backtrace'. On peut taper where
c'est-à-dire
`où suis-je?'. De là, on peut monter ou descendre dans les appels de
fonctions : up
permet de monter dans le contexte de la function
appelante. down
permet de descendre dans vers la fonction appelée.
Cela nous permet donc de se trouver dans le contexte de n'importe quelle
fonction liée au core dump. On peut imprimer les variables que l'on veut
dans le contexte courant avec la commande print
ou p
. Bon, c'est
ben sympatique, mais je veux voir le source car c'est plus parlant! Pas de
problème, il suffit de lister quelques lignes: (gdb) l
titi.c:bibi
(gdb) l titi.c:30
q
.
GDB a de nombreuses commandes. pour en savoir plus, il suffit
de taper `h' et il vous propose une liste de thèmes. tapez alors :
(gdb) h `le thème voulu'