Table des matières

GDB

Commandes

Affichages

Afficher les valeurs des variables dans une autre base

Source

print/x var # affiche en hexa
print/t var # affiche en binaire

Chaînes de caractères en C++

Afficher le contenu de la chaîne de caractères de type std::string en C++ (source) :

print *(char**)0x7fffffffda88

Breakpoints

Activer un breakpoint seulement après un certain nombre de passages

Source

ignore <br-id> <nombre de fois à ignorer>

Poser un point d'arrêt sur toutes les fonctions validant une regex

Par exemple toutes les fonctions qui ont un préfixe donné (source) :

rbreak ^pthread_

Indiquer les paramètres du programme

Directement à l'invocation de GDB (source) :

gdb --args ./foo bar

Lancer automatiquement le programme

Source

gdb -ex run ./a.out

Attacher GDB à un processus en cours

Source

gdb -p <pid>
gdb <programme> <pid>

Suivre les forks

Source

GDB dispose de deux modes:

Pour connaître le mode courant:

show follow-fork-mode

Pour définir le mode:

set follow-fork-mode mode

Fichier .gdbinit

Le fichier doit être créé dans le dossier utilisateur et avoir les droits 600.

Créer des alias

alias tare = target remote

Sauvegarder l'historique

Source

set history save on

S'assurer que les symboles de debug existent

La ligne suivante doit renvoyer quelque chose (on peut éventuellement greper debug ; source) :

objdump --syms $fichier

Générer un core dump

Depuis GDB :

generate-core-file [/chemin/vers/le/core.foo]

Sans ouvrir GDB :

gcore $pid