Xavier Lamorlette
Sommaire :
gdb binaire core
gdb -p pid
gdb --args [programme options]
gcc -ggdb3
backtrace
/ bt
/ where
break
/ br
command
cont
/ c
delete [breakpoint number]
directory [dir]
frame n
info
list
/ l
next
/ n
print [xxx]
/ p
ret
/ r
step
/ s
thread
nm
objdump
readelf
gdb binaire core
Analyse post-mortem.
Sans le binaire : gdb -c core
gdb -p pid
Attacher gdb à un processus qui tourne.
En faisant ps x
on voit que le processus est trace.
gdb --args [programme options]
Lancer un programme avec ses options via gdb.
gcc -ggdb3
Génére des symboles optimisés pour gdb, par exemple pour les macros.
backtrace
/ bt
/ where
Affiche la stack (= info stack
).
bt full
: affiche la stack et les variables localesbreak
/ br
Insère un breakpoint.
br [file]:[line]
br [function]
br [where] if [condition]
command
command [breakpoint number]
...
end
Liste de commandes qui seront executées à chaque fois que le breakpoint est atteint.
cont
/ c
Continue l'exécution.
delete [breakpoint number]
Supprime un breakpoint.
directory [dir]
Ajoute un répertoire pour chercher les sources.
Refaire la dernière commande.
frame n
Change le niveau de la stack.
info
info args
: arguments de la fonction de la frameinfo breakpoints
info locals
: variables localesinfo thread
: affiche le dernier niveau de la stack pour tous les threadsinfo symbol [xxx]
: information sur un symbole (peut être une fonction)info reg [xxx]
: information sur un registre
rax
: registre returned valuelist
/ l
Affiche le code du niveau courant de la stack.
list -
: remonternext
/ n
Va à la ligne suivante (n'entre pas dans les fonctions) = step over.
print [xxx]
/ p
Affiche la valeur d'une variable.
ret
/ r
Finit l'exécution de la frame = step return (= finish
).
step
/ s
Va à la ligne suivante et entre dans les fonctions = step into.
set substitute-path [original_path] [new_path]
Changer le chemin pour aller chercher les sources.
thread
Indique quel est le thread courant.
thread [n]
: bascule sur le thread n.
nm
nm -l -C libdll.so
-C
: demangleobjdump
Affiche le contenu d'un objet binaire.
objdump -t [object file] | c++filt
: affiche la table de symbolesobjdump -t [object file] | c++filt | grep [template name] | grep 'typeinfo name'
: cherche les instances d'un template (utile pour mettre un breakpoint sur une instance donnée de template)readelf
Affiche les informations sur un binaire ELF.
readelf -d [binary]
: liste les bibliothèques utiliséesLa dernière mise à jour de cette page date de novembre 2018.
Le contenu de ce site est, en tant qu'œuvre originale de l'esprit, protégé par le droit d'auteur.
Pour tout commentaire, vous pouvez m'écrire à xavier.lamorlette@gmail.com.