gdb

Différences

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

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
gdb [2021/11/22 23:00] – add behaviour on forks phswgdb [2025/03/05 12:16] (Version actuelle) – Add how to generate a core dump phsw
Ligne 5: Ligne 5:
  
   * ''l'' liste le code, ''l -'' liste le code précédent   * ''l'' liste le code, ''l -'' liste le code précédent
-  * ''info break'': affiche les infos sur les breakpoints +  * ''info break'' : affiche les infos sur les breakpoints 
-  * ''disable n'': désactive le breakpoint ''n''+  * ''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 ====+==== Affichages ==== 
 + 
 +=== Afficher les valeurs des variables dans une autre base ===
  
 [[https://stackoverflow.com/questions/9671820/print-variables-in-hexadecimal-or-decimal-format|Source]] [[https://stackoverflow.com/questions/9671820/print-variables-in-hexadecimal-or-decimal-format|Source]]
Ligne 19: Ligne 25:
  
  
 +=== Chaînes de caractères en C++ ===
  
-==== Activer un breakpoint seulement après un certain nombre de passages ====+Afficher le contenu de la chaîne de caractères de type ''std::string'' en C++ ([[https://stackoverflow.com/questions/6776961/how-to-inspect-stdstring-in-gdb-with-no-source-code|source]]) : 
 +<code> 
 +print *(char**)0x7fffffffda88 
 +</code> 
 + 
 + 
 + 
 + 
 +==== Breakpoints ==== 
 + 
 +=== Activer un breakpoint seulement après un certain nombre de passages ===
  
 [[https://stackoverflow.com/questions/2956889/how-to-make-a-gdb-breakpoint-only-break-after-the-point-is-reached-a-given-numbe|Source]] [[https://stackoverflow.com/questions/2956889/how-to-make-a-gdb-breakpoint-only-break-after-the-point-is-reached-a-given-numbe|Source]]
Ligne 28: Ligne 45:
 </code> </code>
  
 +=== Poser un point d'arrêt sur toutes les fonctions validant une regex ===
 +
 +Par exemple toutes les fonctions qui ont un préfixe donné ([[https://stackoverflow.com/questions/24614062/how-do-i-break-on-all-functions-that-matches-a-pattern|source]]) :
 +<code>
 +rbreak ^pthread_
 +</code>
 +
 +
 +
 +==== Indiquer les paramètres du programme ====
 +
 +Directement à l'invocation de GDB ([[https://stackoverflow.com/questions/6121094/how-do-i-run-a-program-with-commandline-arguments-using-gdb-within-a-bash-script|source]]) :
 +<code bash>
 +gdb --args ./foo bar
 +</code>
 +
 +
 +==== Lancer automatiquement le programme ====
 +
 +[[https://stackoverflow.com/questions/2119564/how-to-automatically-run-the-executable-in-gdb|Source]]
 +
 +<code bash>
 +gdb -ex run ./a.out
 +</code>
  
  
Ligne 78: Ligne 119:
 <code> <code>
 set history save on set history save on
 +</code>
 +
 +
 +
 +==== S'assurer que les symboles de debug existent ====
 +
 +La ligne suivante doit renvoyer quelque chose (on peut éventuellement greper ''debug'' ; [[https://stackoverflow.com/questions/3284112/how-to-check-if-program-was-compiled-with-debug-symbols|source]]) :
 +<code bash>
 +objdump --syms $fichier
 +</code>
 +
 +
 +==== Générer un core dump ====
 +
 +Depuis GDB :
 +<code>
 +generate-core-file [/chemin/vers/le/core.foo]
 +</code>
 +
 +Sans ouvrir GDB :
 +<code bash>
 +gcore $pid
 </code> </code>
  • gdb.1637618422.txt.gz
  • Dernière modification : 2021/11/22 23:00
  • de phsw