Outils pour utilisateurs

Outils du site


prog:gdb

Ceci est une ancienne révision du document !


Inspiration

Lancement

  • Soit les paramètres de l'application (facultatif, on peut de faire une fois GDB lancé) :
gdb --args program args
  • Soit le dump à analyser :
gdb program dump
gdb -c dump

Démarrer le débogage

Avec un point d'arrêt sur le main :

start

Sans point d'arrêt initial :

run

Une fois arrêté

La pile

  • Seulement la hiérarchie des fonctions
bt
  • Avec les variables locales
bt full

Afficher le code

  • Afficher plus que la seule ligne en cours
list
  • Activer l'interface graphique (TUI)
CTRL+X + CTRL+A
  • Rafraîchir l'interface graphique (peut être nécessaire si un printf est exécuté dans le programme)
CTRL+L
  • Multi fenêtre
CTRL+X + 2

Répéter de fois autant de nécessaire pour avoir la combinaison de fenêtre : code C / code assembleur, code assembleur / registres, registres / code C.

Pour modifier le contenu de la fenêtre des registres, il faut faire tui reg XXX avec XXX : general / float / system / vector / all.

  • Touches haut et bas

Avant les touches haut et bas permettaient de faire défiler les commandes précédentes / suivantes. En mode TUI, haut et bas font défiler la fenêtre en cours. Il faut utiliser CTRL+P et CTRL+N. #Simplicité…

Breakpoints

La liste

info breakpoints
info watchpoints

Les enlever

clear
delete n

sanitizer

S'arrêter sur les messages du sanitizer qui ne font pas planter le programme :

b __ubsan::ScopedReport::~ScopedReport

How can I break on UBSan reports in gdb and continue? Archive du 12/06/2015 le 07/01/2020

Conditions

b Message.cpp:112 if i == 99
  • Avancer d'une ligne de code sans entrer dans une éventuelle sous-fonction
next
  • Avancer d'une ligne de code en entrant dans une éventuelle sous-fonction
step
  • Reprendre le cours de l'application
continue

Scripts

  • Relancer l'application en boucle

Utile si le plantage d'un programme est aléatoire

Mettre un point d'arrêt sur le début du main (id 1) et sur la fin (id 2).

Taper :

command 1
record
continue
end
command 2
run
end

Bugs

decode_line_full: Assertion `state->canonical_names[i].suffix != NULL' failed.

prog/gdb.1578392977.txt.gz · Dernière modification : 2020/01/07 11:29 de root