CSC 4103 – Programmation système

Portail informatique

Annexe GDB

Les 15 commandes à connaître pour tout padawan

Pour lancer/quitter GDB

gdb [prog] Charge le programme [prog] dans GDB.
gdb --args [prog] [arg1 arg2 ...] Charge le programme [prog] dans GDB avec les paramètres [arg1 arg2 ...]
gdb [prog] [core-file] Charge le core-dump du programme [prog] dans GDB.
q ou quit Quitte GDB.

Lancer l'exécution d'un programme

r ou run Lance l'exécution du programme chargé dans gdb.
r [arg1 arg2 ...] Lance l'exécution du programme chargé dans gdb avec les paramètres [arg1 arg2 ...].
set [args arg1 arg2 ...] Sélectionne la liste des arguments ([arg1 arg2 ...]) pour le prochain programme à démarrer.

Examiner l'état d'un processus

p [var] ou print [var] Affiche la valeur de la variable [var].
p/x [var] Affiche la valeur hexadécimale de la variable [var].
display [var] Affiche la valeur de la variable [var] à chaque arrêt du programme.
bt ou backtrace Affiche la pile d'appel.
frame Affiche la stack frame courante.
frame [x] Sélectionne la stack frame [x].
l ou list Affiche la portion de code autour de la stack frame sélectionnée.

Surveiller l'exécution d'un processus

b [pos] ou break [pos] Positionne un breakpoint à l'endroit [pos]. [pos] peut être un nom de fonction, un numéro de ligne (du fichier courant), un nom de fichier+numéro de ligne (break mon_fichier:57), etc.
clear [pos] Supprime le breakpoint positionné à l'endroit [pos].
d [num] ou delete [num] Supprime le breakpoint nméro [num].
w [var] ou watch [var] Surveille l'état de la variable [var].

Contrôler l'exécution d'un processus

n ou next Avance d'un pas.
s ou step Avance d'un pas. Si l'instruction à exécuter est un appel de fonction, ne descend pas dans la fonction.
c ou continue Continue l'exécution jusqu'au prochain breakpoint.

Pour devenir un maître jedi de GDB

Assembleur

disassemble [function] Affiche le code assembleur de la fonction [function].
info registers Affiche la valeur des registres.
p $[register] Affiche la valeur d'un registre. Exemple: print $eax.

Reverse debugging

record Démarre l'enregistrement du comportement du processus.
record stop Arrête l'enregistrement.
rs ou reverse-step Comme step, mais en arrière.
rn ou reverse-next Comme next, mais en arrière.
rc ou reverse-continue Comme continue, mais en arrière.
set can-use-hw-watchpoints 0 Permet d'utiliser des watchpoints en reverse debugging.

Autres

break [pos] if [cond] Arrête le processus à [pos] si la condition [cond] est vérifiée.
up Remonte d'une stack frame dans la pile.
down Descend d'une stack frame dans la pile.
attach [pid] Attache GDB au processus de pid [pid].
detach Détache le processus de GDB.
set env [var]=[value] Affecte la valeur [value] à la variable d'environnment [var].

Autres ressources: