gdb

Ceci est une ancienne révision du document !


GDB

  • l liste le code, l - liste le code précédent
  • info break : affiche les infos sur les breakpoints
  • info locals : pour voir toutes les variables existantes dans le contexte actuel et leurs valeurs
  • disable n : désactive le breakpoint n
  • thread apply all bt : affiche la backtrace de tous les threads
  • save breakpoints filename pour sauvegarder les breakpoints, puis source filename pour les restaurer
  • dprintf 16,“current value %d\n”,i : à chaque passage à la ligne 16, ajoute le printf correspondant

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

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_

Directement à l'invocation de GDB (source) :

gdb --args ./foo bar

Source

gdb -ex run ./a.out

Source

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

Source

GDB dispose de deux modes:

  • parent: GDB continue à debugguer le processus père
  • child: 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

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

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

objdump --syms $fichier
  • gdb.1713167954.txt.gz
  • Dernière modification : 2024/04/15 09:59
  • de phsw