web-dev-qa-db-fra.com

Commandes les plus délicates / utiles pour le débogueur gdb

Pouvez-vous publier vos commandes les plus délicates et utiles pendant que vous exécutez un débogueur comme gdb ou dbx.

136
Vijay
  1. backtrace full: Backtrace complet avec variables locales
  2. haut, bas, frame: se déplacer dans les frames
  3. watch: Suspendre le processus lorsqu'une certaine condition est remplie
  4. activer l'impression: Imprime le code source C joliment formaté
  5. activer la connexion: consigner la session de débogage à montrer aux autres pour assistance
  6. activer la matrice d'impression: Impression de la jolie matrice
  7. terminer: continuer jusqu'à la fin de la fonction
  8. activer et désactiver: activer/désactiver les points d'arrêt
  9. tbreak: Arrêtez une fois, puis supprimez le point d'arrêt
  10. : numéro de ligne en cours d'exécution
  11. info local: Voir toutes les variables locales
  12. info args: Voir tous les arguments de la fonction
  13. liste: voir la source
  14. rbreak: pause sur la fonction correspondant à l'expression régulière
132
artagnon

Lancer gdb avec une interface utilisateur textuelle

gdb -tui
99
Amro

Depuis gdb 7.0, il y a débogage réversible , donc vos nouvelles commandes préférées sont:

* reverse-continue ('rc') -- Continue program being debugged but run it in reverse
* reverse-finish -- Execute backward until just before the selected stack frame is called
* reverse-next ('rn') -- Step program backward, proceeding through subroutine calls.
* reverse-nexti ('rni') -- Step backward one instruction, but proceed through called subroutines.
* reverse-step ('rs') -- Step program backward until it reaches the beginning of a previous source line
* reverse-stepi -- Step backward exactly one instruction
* set exec-direction (forward/reverse) -- Set direction of execution.
43
Paul Biggar

Au lieu de lancer GDB avec le paramètre "-tui", vous pouvez également passer en mode texte après un certain temps en utilisant en tapant "wh".

20
martin

thread apply all bt ou thread apply all print $pc: Pour découvrir rapidement ce que font toutes les discussions.

14
Olof

Par exemple, les macros définies dans stl-views.gdb

6
grigy

En utilisant le -command=<file with gdb commands> option lors du lancement de gdb. Pareil que -x <command file>. Ce fichier de commandes peut contenir des commandes gdb comme des points d'arrêt, des options, etc. Utile dans le cas où un exécutable particulier doit être soumis à des exécutions de débogage successives à l'aide de gdb.

6
raghava

gdb de script est une bonne astuce, à part que j'aime activer/désactiver le verrouillage du programmateur pour empêcher l'exécution d'autres threads lorsque vous en entrez un.

5
Ben

Au lieu de démarrer gdb avec l'option -tui pour voir un processus enfant qui contient un écran qui met en évidence où se trouve la ligne de code en cours d'exécution dans votre programme, sautez dans et hors de cette fonction avec C-x o et C-x a. Ceci est utile si vous utilisez la fonctionnalité et ce que vous ne devez pas temporairement l'utiliser afin que vous puissiez utiliser la flèche vers le haut pour obtenir une commande précédente.

4
Rose Perrone
  • Utilisation de . Gdbinit (fichier de démarrage où vous pouvez écrire des macros et appeler depuis gdb). Placez .gdbinit dans votre répertoire personnel afin qu'il soit récupéré à chaque chargement de gdb
  • threads info pour lister tous les threads actifs, et f (#) -> # numéro de thread vers lequel vous souhaitez basculer

  • parfois j'utilise gdb pour convertir de l'hex en décimal ou binaire, c'est très pratique au lieu d'ouvrir une calculatrice

    • p/d 0x10 -> donne l'équivalent décimal de 0x10
    • p/t 0x10 -> équivalent binaire de 0x10
    • p/x 256 -> équivalent hexadécimal de 256
3
subbul

Cela peut être utile, je suis sûr que cela pourrait être amélioré, aidez-nous à vous féliciter:

define mallocinfo
  set $__f = fopen("/dev/tty", "w")
  call malloc_info(0, $__f)
  call fclose($__f)
2
elmarco

Pour déboguer STL, ajoutez du contenu à .gdbinit, suivez ces instructions:

http://www.yolinux.com/TUTORIALS/GDB-Commands.html#STLDEREF

2
Bob Yoplait