Comment mettre en valeur et colorer la sortie gdb lors du débogage interactif?

Veuillez ne pas répondre, je devrais utiliser ddd, nemiver, emacs, vim, ou de toute autre front-end, je préfère juste gdb comme il est, mais il souhaiterait que sa sortie avec quelques terminal de couleurs.

144

10 réponses

.gdbinit

Vous pouvez modifier votre ~/.gdbinit pour avoir des couleurs. Vous pouvez utiliser le .gdbinit de mammon qui est disponible ici:

https://github.com/gdbinit/gdbinit

vous pouvez l'ajuster autant que vous voulez aussi. J'ai trouvé cela grâce à cette réponse ainsi . Voici le type de sortie que vous pouvez obtenir:

.gdbinit

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

sur une note latérale, la même idée était également appliqué à lldb .

GDB tableau de bord

suivant le même concept, gdb Dashboard fournit une interface visuelle modulaire pour GDB en Python.

GDB Dashboard

(nul)walker

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

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

(void)walker

pwndbg

certains projets fournissent un ensemble de fonctions utiles, y compris l'amélioration de l'affichage. C'est le cas pour PEDA ou pwndbg . Ce dernier donne la description suivante:

UN PEDA de remplacement. 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 exploiter le développement similaire à ceux de PEDA, et un meilleur affichage (bien que ce ne soit pas l'objectif principal du projet). Le logiciel est toujours en cours de développement et n'a pas encore été publié correctement.

pwndbg

voltron

le la description du projet se lit comme suit:

Voltron est une interface utilisateur de débogage extensible pour les hackers. Il vous permet de attachez à votre débogueur (LLDB) les vues d'utilitaire tournant dans d'autres terminaux. ou GDB), en affichant des informations utiles telles que le démontage, la pile contenu, valeurs de registre, etc, tout en vous donnant toujours la même vous avez l'habitude de déboguer CLI.

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

voltron

FEM

FEM est une autre option, et il est décrit comme:

il est destiné à être utilisé principalement par les exploiteurs et les fournir des fonctionnalités supplémentaires à GDB en utilisant L'API Python pour aider au cours du processus de analyse dynamique et exploitation du développement.

GEF

153
répondu BenC 2018-02-22 01:57:31

il ne s'agit pas de couleurs, mais de gdb texte gui . Cela fait une grande différence dans la façon dont gdb est utilisable.

vous pouvez le lancer avec:

gdb -tui executable.out

Capture d'écran:

enter image description here

comme vous pouvez le voir, les principales caractéristiques sont:

  • montre à quel ligne de la source, nous sommes sur et autour des lignes de
  • affiche les points d'arrêt
84
répondu John Carter 2015-05-09 09:22:34

je sais que vous ne vouliez pas de fronde. Mais que dire de cgdb il est très proche de gdb, c'est le mode textmode, mais il a une fenêtre source ci-dessus avec une syntaxe en surbrillance sur le code.

41
répondu Johan 2015-02-11 04:40:48

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

  1. invite colorisée via l'invite"set". Par exemple, faites le prompt en gras et rouge: set prompt 3[1;31m(gdb) 3[m
  2. commandes colorisées via des crochets
  3. mise en évidence de la syntaxe colorisée de la commande" list".

tous les exemples sont disponibles sur le blog suivant billets écrits par Michael Kelleher:

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

"Expérimental GDB de la syntaxe", 15 Mai 2010 (via archive.org)

15
répondu Mike 2015-06-23 09:42:51
#into .gdbinit
shell mkfifo /tmp/colorPipe

define hook-disassemble
echo \n
shell cat /tmp/colorPipe | c++filt | highlight --syntax=asm -s darkness -Oxterm256 &
set logging redirect on
set logging on /tmp/colorPipe
end 

define hookpost-disassemble
hookpost-list
end 

define hook-list
echo \n
shell cat /tmp/colorPipe | c++filt | highlight --syntax=cpp -s darkness -Oxterm256 &
set logging redirect on
set logging on /tmp/colorPipe
end 

define hookpost-list
set logging off 
set logging redirect off 
shell sleep 0.1s
end 

define hook-quit
shell rm /tmp/colorPipe
end 

define re
hookpost-disassemble
echo 3[0m
end 
document re
Restore colorscheme
end 

Attention: Buggy. Pas de support TUI, "mode utilisateur" hack.

trouvé la partie principale ici et l'a modifié un peu. A besoin de highlight, c++filt. Si les couleurs sont abîmées, lancez la commande.

6
répondu ftk 2012-05-03 11:09:15

cgdb est beaucoup mieux que gdb -tui

5
répondu justin.yqyang 2013-04-10 03:34:24

j'ai voulu souligner comme suit: soulignez les lignes d'une trace de pile qui appartiennent à mes fichiers source (plutôt qu'aux bibliothèques).

la solution était d'utiliser gdb-python (sur MSYS; sur Linux typiquement gdb vient avec Python intégré déjà?), crochet backtrace , utiliser

python stack_trace = gdb.execute('backtrace', False, True')

puis traiter stack_trace avec les regexes de Python, et les imprimer. Les couleurs en gras et autres sont obtenues par une fonction comme celle-ci:

def term_style(*v):
    """1 is bold, 30--37 are the 8 colours, but specifying bold may also
    change the colour. 40--47 are background colours."""
    return '\x1B['+';'.join(map(str, v))+'m'

#Use like this:
print term_style(1) + 'This will be bold' + term_style(0) #Reset.
print term_style(1,30) + 'This will be bold and coloured' + term_style(0)
print term_style(1,30,40) + 'Plus coloured background' + term_style(0)
3
répondu Evgeni Sergeev 2014-01-18 08:09:46

Neat, je viens de trouver ce hack en utilisant colout: https://github.com/nojhan/colout/blob/master/colout/example.gdbinit

before - after

3
répondu elmarco 2014-10-20 10:02:34

une autre bonne combinaison de couleurs est donnée par cette configuration . Cela rend l'inspection des retraces beaucoup plus facile. Pour l'utiliser, enregistrez ce fichier comme ~/.gdbinit et lancez gdb normalement

2
répondu Andrea Araldo 2017-10-13 15:31:35

vous pouvez obtenir les couleurs qui vous voulez;

# gdb
(gdb) shell echo -en '\E[47;34m'"3[1m"
...
anything is now blue foreground and white background
...
(gdb) shell tput sgr0
... back to normal
-1
répondu RandomNickName42 2009-07-14 04:16:07