Pouvez-vous publier vos commandes les plus difficiles et utiles pendant que vous exécutez un débogueur comme gdb ou dbx.Commandes les plus délicates/utiles pour le débogueur gdb
Répondre
- backtrace complet: complet backtrace avec des variables locales
- jusqu'à, vers le bas, cadre: Déplacez-vous dans les cadres
- montre: Suspendre le processus lorsqu'une certaine condition est remplie
- print set assez sur: Imprime bien formatés code source C
- exploitation forestière définie sur: Log session de débogage pour montrer aux autres pour le soutien
- matricielleEnsemble d'impression sur: array Jolie impression
- finition: Continuer jusqu'à la fin de la fonction
- permettent et désactiver: Enab le/désactiver les points d'arrêt
- tbreak: Pause une fois, puis retirez le point d'arrêt
- où: Numéro de la ligne en cours d'exécution
- informations habitants: Voir toutes les variables locales
- informations args : Voir tous les arguments de fonction
- liste: voir la source
- RBREAK: pause sur la fonction correspondant à l'expression régulière
Par exemple, les macros définies dans stl-views.gdb
thread apply all bt
ou thread apply all print $pc
: Pour trouver rapidement ce que toutes les discussions sont en train de faire.
C'était la commande que je cherchais depuis longtemps! Il est vraiment désagréable de vérifier tous les 30 fils un par un! – tothphu
Prénom: t a a bt. –
À partir de gdb 7.0, il y a reversible debugging, afin que vos nouvelles commandes favorites 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 "-tui" param vous pouvez aussi passer en mode texte après un certain temps en tapant "wh".
Comment changer de place? –
Ctrl-a a pour revenir à la vue en ligne de commande "normale"! – Kevin
"- 'peut être utilisé avec" wh "plus court sera le meilleur .. :) –
scripting gdb est une bonne astuce, à part que j'aime activer/désactiver le verrouillage du planificateur pour empêcher l'exécution d'autres threads lorsque vous en montez un.
Comment définir le verrouillage du planificateur? –
'set scheduler-locking on' à l'intérieur de gdb – Ben
Comment faites-vous cela par défaut? Je l'ai essayé .gdbinit mais gdb imprime /home/omry/.gdbinit:1: Erreur dans le fichier de commande source: La cible 'Aucun' ne peut pas supporter cette commande. –
- En utilisant .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 ramassé chaque fois gdb est chargé
d'info threads à la liste tous les fils actifs, et f (#) -> # Numéro de fil que vous souhaitez passer à
quelque temps j'utiliser gdb pour convertir hexadécimal en décimal ou binaire, son très pratique au lieu d'ouvrir une calculatrice
- p/d 0x10 -> donne équivalent décimal de 0x10
- p/t 0x10 - > équivalent binaire de 0x10
- p/x 256 -> hex équivalent de 256
En utilisant l'option -command=<file with gdb commands>
lors du tir gdb. Identique à -x <command file>
. Ce fichier de commande 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 en utilisant gdb.
Vous pouvez également utiliser l'option '-iex' pour ajouter des commandes individuelles sur la ligne de commande gdb. – doug65536
Cela peut être utile, je suis sûr qu'il pourrait être amélioré si, aide bienvenue:
define mallocinfo
set $__f = fopen("/dev/tty", "w")
call malloc_info(0, $__f)
call fclose($__f)
Pour debug STL, ajouter du contenu à .gdbinit, suivez les instructions suivantes:
Identique à la réponse de Grigy. – DevSolar
Au lieu de démarrer gdb avec l'option -tui pour voir un processus enfant contenant un écran qui met en évidence l'emplacement de la ligne de code dans votre programme, entrez et sortez de cette fonction avec Cx o et Cx a. Ceci est utile si vous utilisez la fonction et que vous ne l'utilisez pas temporairement, vous pouvez donc utiliser la flèche vers le haut pour obtenir une commande précédente.
vous pouvez changer le focus à la fenêtre de commande en utilisant 'focus cmd' de sorte que les flèches haut/bas fonctionnent. Vous revenez en utilisant 'src focus '. –
'info locals' - Voir toutes les variables locales; liste - voir la source; rbreak - pause sur la fonction correspondant à l'expression régulière. –
source/chemin/vers/macro/fichier Et toutes mes superbes macros sont là pour m'aider à déboguer en quelques secondes. – Sudhanshu
'set set object on' pour les éléments polymorphes et' set print elements 0' sont deux commandes que j'utilise très souvent. Assez utile. –