Voir aussi la GDB Quick Reference Card : https://sourceware.org/gdb/download/onlinedocs/refcard.pdf.gz
Pour ceux d'entre vous qui ont envie d'exploiter gdb
au maximum de ses possibilités, allez voir à la fin de ce fichier !
Commandes générales
file toto
: Ouvre le fichier exécutable toto dans gdbtarget remote :3333
: Sélectionne comme cible d'exécution une sonde JTAG écoutant sur le port TCP local 3333.load
: Charge le programme sur la cible (via JTAG). Si le fichier ELF contient un point d'entrée, gdb y positionne automatiquement le PC.mon blablabla
: envoie la commandeblablabla
au driver de sonde JTAG.
Contrôle de l'exécution
continue
//c
: Continue l'exécution jusqu'au prochain point d'arrêtstep
//s
: Continue jusqu'à ce qu'une autre ligne de code C soit atteintestepi
//si
: Continue jusqu'à la prochaine instruction machine
Points d'arrêts (Breakpoints)
break [file:]line // b [file:]line
: Définit un point d'arrêt à la ligneline
du fichier filebreak [file:]func
: Définit un point d'arrêt à l'entrée de la fonctionfunc
du fichier filebreak *addr
: Définit un point d'arrêt à l'adresseaddr
info break
: Affiche la liste des points d'arrêtsclear [file:]line
: Supprime le point d'arrêtclear [file:]func
: Supprime le point d'arrêtdelete
: Supprime tous les points d'arrêt
Examen des registres / mémoire
info registers // i r
: Affiche l'état des registresprint
// p
: Affiche la valeur d'une variable ou d'un registre. Les registres doivent être précédés par $p $r0
: Affiche le contenu de r0p/x $pc
: Affiche le contenu du pc en hexadecimal (/x
= Hexa,/d
= Décimal signé,/u
= Décimal non signé,/t
= Binaire)
x [/Nuf] expr
: Affiche le contenu de la mémoire à l'adresse exprN
= Nombre d'éléments à afficheru
= Taille des éléments (b
= Bytes,h
= Half words (16 bits),w
= Words (32 bits),g
= Giant words (64 bits)f
= Format (x
= Hexa,d
= Décimal signé,u
= Décimal non signé,t
= Binaire...)- l'expression peut être un registre. Par exemple, pour afficher des 8 derniers éléments de la pile :
x/8 $sp
list
: Affiche le code source autour de l'instruction en coursdisass addr
: Affiche le contenu de la mémoire à l'adresse addr sous forme d'instructionsdisplay
: Commeprint
mais affiche la valeur après chaque arrêt du programme
Layout
layout split
: affiche l'affichage en deux zones, l'une de commandes, l'autre de code et/ou registreslayout asm
: en mode split, affiche le code assembleur dans la fenêtre du hautlayout regs
: en mode split, affiche les registres dans la fenêtre du hautfocus cmd
: donne le focus à la zone de commandes gdb
Astuce:
enter
: réexecute la dernière commande
Références
help
: L'aide en ligne- Le manuel de référence de gdb
Un .gdbinit
intéressant pour nos TP :
target ext :2331
mon endian little
mon halt
# User interface with asm, regs and cmd windows
define split
layout split
layout asm
layout regs
focus cmd
end
mon endian little
mon halt
# User interface with asm, regs and cmd windows
define split
layout split
layout asm
layout regs
focus cmd
end