gdb

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

Depuis GDB :

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

Sans ouvrir GDB :

gcore $pid
  • gdb.txt
  • Dernière modification : 2025/03/05 12:16
  • de phsw