Wie markieren und Farbe gdb Ausgabe während der interaktiven Debugging?
Frage
Bitte nicht antworten soll ich ddd, Nemiver, Emacs, Vim oder anderes Front-End verwenden, ich gdb gerade bevorzugen, wie es ist, möchte aber seine Ausgabe mit einigen Terminal Farben sehen.
Lösung
.gdbinit
Sie können Ihre ~/.gdbinit
zwicken Farben zu haben. Sie können Mammon .gdbinit
verwenden, die hier zur Verfügung:
https://github.com/gdbinit/gdbinit
Sie können es zwicken so viel wie Sie wollen auch. Ich fand diese dank diese SO beantworten . Hier ist die Art der Ausgabe, die Sie erhalten können:
Ein GitHub-Repository ist ebenfalls verfügbar: https://github.com/gdbinit/Gdbinit
Auf einer Seite zur Kenntnis, war die gleiche Idee auch angewandt LLDB.
GDB Armaturenbrett
Nach dem gleichen Konzept, GDB-Dashboard für GDB in Python eine modulare optische Schnittstelle bietet .
(void) walker
Ein weiteres ähnliches Projekt verwendet Python GDB Unterstützung mehr Dehnbarkeit zu schaffen, so ist dies lohnt sich: https: // Github .com / dholm / Voidwalker
@dholm stellt auch seine eigene .gdbinit von der vorherigen inspiriert.
pwndbg
Einige Projekte bieten eine Reihe von nützlichen Funktionen, darunter verbesserte Anzeige. Dies ist der Fall für PEDA oder pwndbg . Dieser gibt die folgende Beschreibung:
Ein PEDA Ersatz. Im Geiste unserer guten Freund
windbg
istpwndbg
ausgeprägtpwnd-bag
.
- Geschwindigkeit
- Resiliency
- Sauberer Code
Es enthält Befehle Debuggen zu unterstützen und die Entwicklung ähnlich denen von PEDA zu nutzen und eine bessere Anzeige (obwohl dies nicht der Schwerpunkt des Projekts ist). Die Software ist noch in der Entwicklung und ist noch nicht richtig freigegeben.
voltron
Das Projekt Beschreibung heißt es:
Voltron ist eine erweiterbare Debugger UI für Hacker. Es ermöglicht Ihnen, befestigen Dienstprogramm Ansichten in anderen Terminals zu Ihrem Debugger ausgeführt wird (LLDB oder GDB), hilfreiche Informationen wie Demontage anzeigt, Stapel Inhalte, Registerwerte, etc., während Sie immer noch die gleiche geben Debugger CLI Sie verwendet.
Sie können Ihre .gdbinit
ändern, um automatisch zu integrieren. Jedoch selbst die Anzeige außerhalb der GDB ist (beispielsweise in einem TMux split).
GEF
GEF ist eine weitere Option, und es wird beschrieben, wie:
Es richtet sich vor allem von Ausbeutern verwendet werden und Reverse-Ingenieure, um bieten zusätzliche Funktionen GDB den Python-API zu unterstützen während des Prozesses der dynamischen Analyse und Nutzung Entwicklung.
Andere Tipps
Es ist nicht Farben, sondern betrachten Text gui der GDB. Es macht einen großen Unterschied, wie verwendbar GDB ist.
Sie können starten Sie es mit:
gdb -tui executable.out
Screenshot:
Wie Sie sehen können, sind die wichtigsten Merkmale:
- zeigt, welche Linie der Quelle sind wir auf und die umliegenden Linien
- zeigt Stützpunkte
Ich weiß, dass Sie nicht ein Frontend wollen. Aber wie wäre es cgdb es zu gdb ganz in der Nähe ist, es ist aber ein Textmodus Quelle Fenster oben mit Syntaxhervorhebung auf dem Code hat.
Es ist möglich, stark die erscheint den GDB durch die Verwendung von Farben zu verbessern. Dies geschieht über eine der folgenden Methoden erfolgen:
-
Colorized prompt über die "set prompt". Zum Beispiel, um die Eingabeaufforderung fett und rot:
set prompt \033[1;31m(gdb) \033[m
oder die Aufforderung eine neue Form machen, fett und rot:
set prompt \033[01;31m\n\n#####################################> \033[0m
-
Färben Befehle über Haken
- Färbte Syntax-Hervorhebung der "Liste" Befehl.
Alle Beispiele sind in den folgenden Blog-Beiträge verfügbar geschrieben von Michael Kelleher:
"Verschönern GDB", Mai 12, 2010 (über archive.org)
"Experimental GDB Syntaxhervorhebung" , 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
Achtung: Buggy. Keine TUI Unterstützung, 'user-mode' hacken.
Gefunden der Hauptteil hier und modifiziert es ein wenig. Benötigt Highlight, c ++ filt. Wenn die Farben erhalten verkorkste Problem re-Befehl.
cgdb
ist viel besser als gdb -tui
Ordentlich, ich habe gerade diesen Hack mit colout: https: / /github.com/nojhan/colout/blob/master/colout/example.gdbinit
wollte ich hervorheben, wie folgt: betonen die Linien eines Stack-Trace, die zu meiner Quelldateien gehören (statt Bibliotheken)
. Die Lösung war GDB-Python zu verwenden (auf MSYS,? Auf Linux normalerweise gdb
mit Python integriert, in dem bereits), Haken backtrace
, verwenden Sie
python stack_trace = gdb.execute('backtrace', False, True')
Dann Prozess stack_trace
mit Pythons reguläre Ausdrücke und ausdrucken. Bold und andere Farben durch eine Funktion wie folgt erreicht werden:
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)
Eine weitere gute Kombination von Farben ist gegeben durch diese Konfiguration . Sie machen die Inspektion die Backtraces viel einfacher. Um es zu nutzen, speichern Sie die Datei als ~/.gdbinit
und führen Sie gdb normalerweise
Neu in der kommenden GDB 8.3!
https: / /sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=blob;f=gdb/NEWS
Terminal Styling ist jetzt für die CLI und die TUI zur Verfügung. GNU Source Highlight kann zusätzlich verwendet werden, Styling des Quellcodes zur Verfügung zu stellen Schnipsel. Siehe „Set-Stil“ -Befehle, unten, für weitere Informationen.
Sie können bekommen, was Farben, die Sie wünschen;
# gdb
(gdb) shell echo -en '\E[47;34m'"\033[1m"
...
anything is now blue foreground and white background
...
(gdb) shell tput sgr0
... back to normal