Ceci est une ancienne révision du document !
GDB
Commandes
lliste le code,l -liste le code précédentinfo break: affiche les infos sur les breakpointsinfo locals: pour voir toutes les variables existantes dans le contexte actuel et leurs valeursdisable n: désactive le breakpointnthread apply all bt: affiche la backtrace de tous les threadssave breakpoints filenamepour sauvegarder les breakpoints, puissource filenamepour les restaurerdprintf 16,“current value %d\n”,i: à chaque passage à la ligne 16, ajoute leprintfcorrespondant
Affichages
Afficher les valeurs des variables dans une autre base
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
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
gdb -ex run ./a.out
Attacher GDB à un processus en cours
gdb -p <pid> gdb <programme> <pid>
Suivre les forks
GDB dispose de deux modes:
parent: GDB continue à debugguer le processus pèrechild: GDB continue à debugguer le processus fils
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
set history save on