Réponses:
info locals
- Afficher toutes les variables locales; list - afficher la source; rbreak - pause sur la fonction correspondant à une expression régulière.
set print object on
pour les éléments polymorphes et ce set print elements 0
sont deux commandes que j'utilise très souvent. Assez utile.
t a a bt
(sens thread apply all backtrace
). Peut être utilisé avec (presque) toutes les autres commandes. Particulièrement utile avec bt full
.
Démarrez gdb avec une interface utilisateur textuelle
gdb -tui
À partir de gdb 7.0, il existe un 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.
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".
C-x a
. Vous pouvez également changer de vue avec C-x 1
et C-x 2
en mode tui pour voir également l'assemblage (si nécessaire).
Par exemple les macros définies dans stl-views.gdb
Utilisation de l' -command=<file with gdb commands>
option lors du lancement de gdb. Identique à -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.
-iex
option pour ajouter des commandes individuelles sur la ligne de commande gdb.
le script gdb est une bonne astuce, à part cela, j'aime activer / désactiver le verrouillage du programmateur pour empêcher l'exécution d'autres threads lorsque vous en entrez un.
set scheduler-locking on
inside gdb
fils d'information pour lister tous les threads actifs, et f (#) -> # numéro de thread que vous voulez basculer
parfois, j'utilise gdb pour convertir de l'hexagone en décimal ou binaire, c'est très pratique au lieu d'ouvrir une calculatrice
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, entrez et sortez de cette fonctionnalité avec Cx o et Cx a. Ceci est utile si vous utilisez la fonctionnalité et que vous ne devez pas l'utiliser temporairement afin que vous puissiez utiliser la flèche vers le haut pour obtenir une commande précédente.
focus cmd
sorte que les flèches haut / bas fonctionnent. Vous revenez en utilisant focus src
.
Pour déboguer STL, ajoutez du contenu à .gdbinit, suivez ces instructions: