Outils pour utilisateurs

Outils du site


prog:gdb

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
prog:gdb [2017/07/04 17:35] – Création avec "Breakpoints" et "La pile" rootprog:gdb [2024/04/05 11:31] (Version actuelle) – Complétion des breakpoints root
Ligne 1: Ligne 1:
-=====Breakpoints===== +[[https://www.youtube.com/watch?v=PorfLSr3DDI|Inspiration]] 
-====La liste====+ 
 +=====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 breakpoints
   info watchpoints   info watchpoints
  
-====Les enlever====+  * Les enlever 
   clear   clear
   delete n   delete n
  
-=====La pile===== +  * Les désactiver 
-Seulement la hiérarchie des fonctions+ 
 +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   bt
  
-Avec les variables locales+  * Avec les variables locales 
   bt full   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é…
 +
 +=====Naviguer dans le débogage=====
 +
 +  * 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.====
 +
 +Il faut supprimer tous les ''breakpoints'' / ''watchpoints''. Trouvé depuis LPCXpresso pour ARM.
 +[[https://mcuoneclipse.com/2014/10/11/failed-to-debug-with-gdb-breakpoints-or-expressions-on-non-existing-locations/|Failed to Debug with GDB: Breakpoints or Expressions on non-existing Locations | MCU on Eclipse]] {{ :prog:gdb:failed_to_debug_with_gdb_breakpoints_or_expressions_on_non-existing_locations_mcu_on_eclipse_2020-01-07_11_27_12_am_.html |Archive du 11/10/2014 le 07/01/2020}}
 +
 +N'existe plus depuis la version v4.9 ([[https://bugs.launchpad.net/gcc-arm-embedded/+bug/1380026|Bug #1380026 “Internal GDB failure and crash for breakpoint with...”   Bugs   GNU ARM Embedded Toolchain]] {{ :prog:gdb:bug_1380026_internal_gdb_failure_and_crash_for_breakpoint_with..._bugs_gnu_arm_embedded_toolchain_2020-01-07_11_27_21_am_.html |Archive du 11/10/2014 le 07/01/2020}}
prog/gdb.1499182517.txt.gz · Dernière modification : 2017/07/04 17:35 de root