203 votes

Comment mettre en évidence et colorer la sortie de gdb pendant le débogage interactif ?

S'il vous plaît, ne me répondez pas que je devrais utiliser ddd, nemiver, emacs, vim, ou tout autre front-end, je préfère simplement gdb tel quel, mais j'aimerais voir sa sortie avec quelques couleurs de terminal.

4 votes

Cela ne vous donnera pas de couleurs (je n'appellerai donc pas cela une réponse), mais une certaine configuration de ~/.gdbinit améliorera l'expérience. J'utilise ceci comme un minimum : set history save on set print pretty set output-radix 16 set height 0

0 votes

Une fois que la ligne actuelle est mise en évidence sur l est mis en œuvre sourceware.org/bugzilla/show_bug.cgi?id=21044 Je vais juste ajouter l à un hook-stop et entrer dans le Dev Nirvana.

215voto

BenC Points 2292

.gdbinit

Vous pouvez modifier votre ~/.gdbinit pour avoir des couleurs. Tu peux utiliser la méthode de Mammon .gdbinit qui est disponible ici :

https://github.com/gdbinit/gdbinit

Vous pouvez le modifier autant que vous le souhaitez. J'ai trouvé ceci grâce à cette réponse SO . Voici le type de résultat que vous pouvez obtenir :

.gdbinit

Un dépôt GitHub est également disponible : https://github.com/gdbinit/Gdbinit

D'ailleurs, la même idée a été aussi appliqué à lldb .

Tableau de bord GDB

Suivant le même concept, Tableau de bord GDB fournit une interface visuelle modulaire pour GDB en Python.

GDB Dashboard

(void)marcheur

Un autre projet similaire utilise le support Python de GDB pour fournir plus d'extensibilité, il vaut donc la peine de le vérifier : https://github.com/dholm/voidwalker

@dholm fournit également son propre .gdbinit inspiré du précédent.

(void)walker

pwndbg

Certains projets offrent un ensemble de fonctions utiles, notamment un affichage amélioré. C'est le cas de PEDA o pwndbg . Ce dernier donne la description suivante :

Un remplacement de PEDA. Dans l'esprit de notre bon ami windbg , pwndbg se prononce pwnd-bag .

  • Vitesse
  • Résilience
  • Code propre

Il fournit des commandes pour soutenir le débogage et le développement d'exploits similaires à celles de PEDA, et un meilleur affichage (bien que ce ne soit pas le principal objectif du projet). Le logiciel est toujours en cours de développement, et n'a pas encore été correctement publié.

pwndbg

voltron

Le site projet La description indique :

Voltron est une interface de débogage extensible pour les hackers. Elle vous permet de d'attacher des vues d'utilitaires fonctionnant dans d'autres terminaux à votre débogueur (LLDB ou GDB). ou GDB), affichant des informations utiles comme le désassemblage, le contenu de la pile, les valeurs des registres, etc. le contenu de la pile, les valeurs de registre, etc. débogueur auquel vous êtes habitué.

Vous pouvez modifier votre .gdbinit pour l'intégrer automatiquement. Cependant, l'affichage lui-même est en dehors de GDB (par exemple dans un split tmux).

voltron

GEF

GEF est une autre option, et elle est décrite comme suit :

Il est destiné à être utilisé principalement par les exploitants et les spécialistes de l'ingénierie inverse, pour fournir des fonctionnalités supplémentaires à GDB en utilisant l'API Python pour aider à pendant le processus d'analyse dynamique et de développement d'exploits.

GEF

0 votes

Merci beaucoup pour votre réponse, avez-vous une idée de comment désactiver la sortie du registre ? (j'utilise gdb pour du code C++ et je n'ai pas besoin de niveau assembleur tout de suite)

1 votes

@vak avez-vous essayé set $SHOWCPUREGISTERS = 0 ? En gros, vous avez plusieurs paramètres que vous pouvez régler et vous pouvez toujours modifier le code pour l'adapter à vos besoins.

108voto

therefromhere Points 21329

Il ne s'agit pas de couleurs, mais considérez la fonction de gdb guide de texte . Cela fait une grande différence dans l'utilisation de gdb.

Vous pouvez le lancer avec :

gdb -tui executable.out

Capture d'écran :

enter image description here

Comme vous pouvez le constater, les principales caractéristiques sont les suivantes :

  • montre sur quelle ligne de la source nous nous trouvons et les lignes environnantes
  • montre les points d'arrêt

6 votes

Wow ! Merci ! J'ai longtemps cherché un shell graphique sympa pour gdb, et j'ai essayé xxgdb, kgdb et ddd, mais aucun d'entre eux n'a bien fonctionné pour moi, donc je suis resté avec la bonne vieille interface en ligne de commande. Mais ceci est absolument parfait !

55 votes

Ctrl-x Ctrl-a : Entrez ceci pour basculer vers et depuis le mode gui texte, fonctionne même sans l'option de ligne de commande.

3 votes

L'impression vers stdout depuis le programme casse l'interface pour moi. Y a-t-il d'autres solutions que de la rediriger ?

46voto

Johan Points 6127

Je sais que vous ne vouliez pas d'un frontend. Mais que diriez-vous cgdb il est très proche de gdb, il est en mode texte mais possède une fenêtre de source au-dessus avec une coloration syntaxique du code.

2 votes

Sudo apt-get install cgdb

0 votes

Je viens d'essayer de l'exécuter : il ne voit pas l'historique gdb, et il a aussi un prompt foireux, où il y a un espace entre le signe d'insertion et l'endroit où le symbole est tapé. (c'est probablement parce que j'ai une invite colorée dans gdb ) . Pas du tout impressionné.

0 votes

@Hi-Angel Je suppose que cgdb n'utilise pas GNU Readline ou toute autre bibliothèque d'édition de lignes. Si c'est le cas, alors il n'y aura pas de prompt décent. Une autre fonctionnalité puissante fournie par l'éditeur de ligne est de sauter au mot précédent ( Alt f par défaut pour Readline). D'ailleurs, il n'affiche pas correctement la couleur sur mon terminal, mais des déchets comme [?2004h à la place.

18voto

Mike Points 342

Il est possible d'améliorer considérablement l'apparence de gdb par l'utilisation de couleurs. Cela se fait par l'une des méthodes suivantes :

  1. Invite colorée via la fonction "set prompt". Par exemple, rendre l'invite en gras et en rouge :

    set prompt \033[1;31m(gdb) \033[m

    ou faire de l'invite une nouvelle forme, en gras et en rouge :

    set prompt \033[01;31m\n\n#####################################> \033[0m

    enter image description here

  2. Commandes colorisées via des crochets

  3. Coloration de la syntaxe de la commande "list".

Tous les exemples sont disponibles dans les articles de blog suivants, rédigés par Michael Kelleher :

" Beautify GDB ", 12 mai 2010 (via archive.org)

"Coloration syntaxique expérimentale de GDB", 15 mai 2010 (via archive.org)

9 votes

@Mike : il serait utile de poster le contenu de ces liens ici car le site n'est plus accessible et robots.txt a empêché archive.org de l'indexer.

1 votes

Vous pouvez obtenir les informations pertinentes ici : sourceware.org/gdb/current/onlinedocs/gdb/Prompt.html

1 votes

Les liens sont maintenant dirigés vers un cache archive.org des articles du blog.

4voto

ddaa Points 19102

Gdb n'a pas de couleurs, vous devez soit :

  • écrire votre propre frontal basé sur readline,
  • ou de pirater le code directement dans gdb.

Ce serait une bonne idée.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X