Veuillez ne pas répondre Je devrais utiliser ddd, nemiver, emacs, vim ou tout autre frontal, je préfère juste gdb tel quel, mais je voudrais voir sa sortie avec certaines couleurs de terminal.
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 également le modifier autant que vous le souhaitez. J'ai trouvé cela grâce à this SO answer . Voici le type de sortie que vous pouvez obtenir:
Un référentiel GitHub est également disponible: https://github.com/gdbinit/Gdbinit
En passant, la même idée était également appliquée à lldb .
Suivant le même concept, GDB Dashboard fournit une interface visuelle modulaire pour GDB en Python.
Un autre projet similaire utilise la prise en charge de G= Python pour fournir plus d'extensibilité, donc cela vaut la peine d'être vérifié: https://github.com/dholm/voidwalker
@dholm fournit également son propre . gdbinit inspiré du précédent.
Certains projets fournissent un ensemble de fonctions utiles, notamment un affichage amélioré. C'est le cas pour PEDA ou pwndbg . Ce dernier donne la description suivante:
Un remplacement PEDA. Dans l'esprit de notre bon ami
windbg
,pwndbg
se prononcepwnd-bag
.
- La vitesse
- Élasticité
- Code propre
Il fournit des commandes pour prendre en charge le débogage et exploiter un 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é correctement publié.
La description projet indique:
Voltron est une interface utilisateur de débogueur extensible pour les pirates. Il vous permet de joindre à votre débogueur des vues d'utilitaires fonctionnant dans d'autres terminaux (LLDB ou GDB), affichant des informations utiles telles que le démontage, le contenu de la pile, les valeurs de registre, etc., tout en vous offrant la même CLI de débogueur que 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).
GEF est une autre option, et elle est décrite comme:
Il est destiné à être utilisé principalement par des exploiteurs et des ingénieurs en rétro-ingénierie, afin de fournir des fonctionnalités supplémentaires à GDB en utilisant l'API Python pour assister pendant le processus d'analyse dynamique et de développement d'exploits.
Ce ne sont pas des couleurs, mais considérons les gdb text 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:
Comme vous pouvez le constater, les principales fonctionnalités sont:
Je sais que tu ne voulais pas d'un frontend. Mais qu'en est-il cgdb il est très proche de gdb, il est en mode texte mais a une fenêtre source ci-dessus avec une coloration syntaxique sur le code.
Il est possible d'améliorer considérablement l'apparence de gdb grâce à l'utilisation de couleurs. Cela se fait via l'une des méthodes suivantes:
Invite colorisée via le "set Prompt". Par exemple, mettez l'invite en gras et en rouge:
set Prompt \033[1;31m(gdb) \033[m
ou faites de l'Invite une nouvelle forme, en gras et en rouge:
set Prompt \033[01;31m\n\n#####################################> \033[0m
Commandes colorisées via des crochets
Tous les exemples sont disponibles sur les articles de blog suivants rédigés par Michael Kelleher:
"Beautify GDB", 12 mai 2010 (via archive.org)
"Mise en évidence de la syntaxe expérimentale GDB", 15 mai 2010 (via archive.org)
#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 \033[0m
end
document re
Restore colorscheme
end
Avertissement: Buggy. Pas de support TUI, piratage en "mode utilisateur".
Trouvé la partie principale ici et l'a légèrement modifiée. Besoin de mettre en évidence, c ++ filt. Si les couleurs se gâchent, émettez la commande.
cgdb
est bien meilleur que gdb -tui
Neat, je viens de trouver ce hack en utilisant colout: https://github.com/nojhan/colout/blob/master/colout/example.gdbinit
Je voulais mettre en évidence ce qui suit: souligner les lignes d'une trace de pile qui appartiennent à mes fichiers sources (plutôt qu'aux bibliothèques).
La solution consistait à utiliser gdb-python (sous MSYS; sous Linux généralement gdb
est livré avec Python déjà intégré?), Hook backtrace
, utilisez
python stack_trace = gdb.execute('backtrace', False, True')
Ensuite, traitez stack_trace
avec les expressions régulières de Python et imprimez-les. Les couleurs vives 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)
Nouveau dans le prochain GDB 8.3!
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=blob;f=gdb/NEWS
Le style de terminal est désormais disponible pour la CLI et la TUI. GNU Source Highlight peut en outre être utilisé pour fournir le style des extraits de code source. Voir les commandes "set style", ci-dessous, pour plus d'informations.
--- Une autre bonne combinaison de couleurs est donnée par cette configuration . Cela rend l'inspection des backtraces beaucoup plus facile. Pour l'utiliser, enregistrez simplement ce fichier sous ~/.gdbinit
et exécutez gdb normalement