info locals- Afficher toutes les variables locales; list - afficher la source; rbreak - pause sur la fonction correspondant à une expression régulière.
Paul Biggar
source / chemin / vers / macro / fichier Et toutes mes macros astucieuses sont là pour m'aider à déboguer en quelques secondes.
Sudhanshu
1
set print object onpour les éléments polymorphes et ce set print elements 0sont deux commandes que j'utilise très souvent. Assez utile.
Kiril Kirov
1
Aussi, t a a bt(sens thread apply all backtrace). Peut être utilisé avec (presque) toutes les autres commandes. Particulièrement utile avec bt full.
Kiril Kirov
101
Démarrez gdb avec une interface utilisateur textuelle
À 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.
Ctrl-a a pour revenir à la vue de ligne de commande «normale»!
Kevin
2
"- 'peut être utilisé à l'instaed de' wh '. Plus court, mieux c'est .. :)
raj_gt1
6
Ctrl-a a? C'est une blague? Ressemble plus à tmux/ screencommand. Et ne fonctionne pas pour moi. Il doit être l' un comme par docs : C-x C-a, C-x a, C-x A.
x-yuri
C'est en fait C-x a. Vous pouvez également changer de vue avec C-x 1et C-x 2en mode tui pour voir également l'assemblage (si nécessaire).
Sam Whitlock
16
thread apply all btou thread apply all print $pc: Pour découvrir rapidement ce que font tous les threads.
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.
Vous pouvez également utiliser l' -iexoption pour ajouter des commandes individuelles sur la ligne de commande gdb.
doug65536
5
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.
comment en faire la valeur par défaut? Je l'ai essayé .gdbinit mais gdb imprime /home/omry/.gdbinit:1: Erreur dans le fichier de commande source: La cible «None» ne peut pas prendre en charge cette commande.
Omry Yadan
4
Utilisation de .gdbinit (fichier de démarrage dans lequel 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
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.
vous pouvez changer le focus sur la fenêtre de commande en utilisant de focus cmdsorte que les flèches haut / bas fonctionnent. Vous revenez en utilisant focus src.
Nathan Fellman
3
Cela peut être utile, je suis sûr que cela pourrait être amélioré, aidez-nous à accueillir:
Réponses:
la source
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 ceset print elements 0
sont deux commandes que j'utilise très souvent. Assez utile.t a a bt
(sensthread apply all backtrace
). Peut être utilisé avec (presque) toutes les autres commandes. Particulièrement utile avecbt full
.Démarrez gdb avec une interface utilisateur textuelle
la source
À partir de gdb 7.0, il existe un débogage réversible , donc vos nouvelles commandes préférées sont:
la source
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".
la source
Ctrl-a a
? C'est une blague? Ressemble plus àtmux
/screen
command. Et ne fonctionne pas pour moi. Il doit être l' un comme par docs :C-x C-a
,C-x a
,C-x A
.C-x a
. Vous pouvez également changer de vue avecC-x 1
etC-x 2
en mode tui pour voir également l'assemblage (si nécessaire).thread apply all bt
outhread apply all print $pc
: Pour découvrir rapidement ce que font tous les threads.la source
Par exemple les macros définies dans stl-views.gdb
la source
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.la source
-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.
la source
set scheduler-locking on
inside gdbfils 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
la source
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.
la source
focus cmd
sorte que les flèches haut / bas fonctionnent. Vous revenez en utilisantfocus src
.Cela peut être utile, je suis sûr que cela pourrait être amélioré, aidez-nous à accueillir:
la source
Pour déboguer STL, ajoutez du contenu à .gdbinit, suivez ces instructions:
http://www.yolinux.com/TUTORIALS/GDB-Commands.html#STLDEREF
la source