Outils pour utilisateurs

Outils du site


prog:gdb

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

Options

Par défaut

Ajouter dans le fichier $HOME/.gdbinit les commandes à exécuter au démarrage. Par exemple set height 0.

Description

Ne plus avoir de points d'arrêt quand l'affichage d'une donnée prend plus que la taille de l'écran (bt ou display notamment).

Points d'arrêt

  • La liste
info breakpoints
info watchpoints
  • Les enlever
clear
delete n
  • Les désactiver

Certaines applications génèrent beaucoup d'exceptions.

handle SIGSEGV nostop noprint pass
  • Suivre les enfants / fork
set follow-fork-mode child

Conditions

b Message.cpp:112 if i == 99

Exception

Mettre un point d'arrêt sur une exception qui est catch : catch throw.

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é…

  • 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.txt · Dernière modification : 2024/04/05 11:31 de root