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 commandeblablablaau 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 lignelinedu fichier filebreak [file:]func: Définit un point d'arrêt à l'entrée de la fonctionfuncdu fichier filebreak *addr: Définit un point d'arrêt à l'adresseaddrinfo 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: Commeprintmais 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