Ich habe gerade ein Programm in gdb debuggt und irgendwie eine neue Funktion gefunden, die ich noch nie gesehen oder gehört habe, eine geteilte Ansicht, in der ich den Code sehen und durchsuchen kann, zusätzlich zu den folgenden Befehlen:
Was ist das? Was habe ich getan oder genauer gesagt, wie kann ich diesen Split-Screen-Modus wieder aktivieren? Gibt es einen Namen für diesen Modus oder kann ich irgendwo lesen, wie man ihn benutzt?
Antworten:
Es heißt TUI (kein Scherz). Beginnen Sie zum Beispiel mit
gdbtui
odergdb -tui
...quelle
layout next
nach demgdb
normalen Start verwendenSie können es dynamisch auslösen, indem Sie ctrl+ xund ctrl+ drücken a.
quelle
Es gibt zwei Varianten davon.
Zusammen drücken
CTRL
X
und dann1
Drücken Sie gleichzeitig 'STRG' 'X' und dann '2'
http://www.cs.fsu.edu/~baker/ada/gnat/html/gdb_23.html
Ein Screenshot der Ansicht mit Code und Assembly.
Schauen Sie sich auch dieses erstaunliche Github-Projekt an.
quelle
Sie können es auch von der GDB-Shell aus mit dem Befehl "-" (Bindestrich) starten. Ich bin mir nicht sicher, wie ich es dynamisch ausschalten soll.
quelle
GDB-Dashboard
https://github.com/cyrus-and/gdb-dashboard
Das GDB-Dashboard verwendet die offizielle GDB-Python-API und druckt die gewünschten Informationen, wenn GDB beendet wird, z. B. nach a
next
, wie der nativedisplay
Befehl .Vs TUI:
robuster, da es nur auf Standard druckt, anstatt die Shell in einen magischeren Fluchzustand zu versetzen, z.
vi
Modus in.inputrc
verursacht Probleme: /superuser/180512/how-to-turn-off-gdb-tui/927728#927728Hochgradig konfigurierbar über Python: Sie können auswählen, was Sie ausgeben möchten und wie groß die einzelnen Abschnitte sind, je nachdem, was Sie debuggen.
Die nützlichsten Ansichten sind bereits implementiert: Quelle, Assembly, Register, Stapel, Speicher, Threads, Ausdrücke ... aber es sollte einfach sein, sie mit allen Informationen zu erweitern, die in der GDB Python-API verfügbar gemacht werden.
TUI erlaubt nur die Anzeige von zwei Quellen, Assemblys und Registern, und das ist es. Es sei denn, Sie möchten den C-Quellcode ändern ;-)
Ich glaube, dass GDB mit einem solchen Setup ausgeliefert werden sollte, das standardmäßig aktiviert ist. Auf diese Weise würde es viel mehr Benutzer anziehen.
Oh, und der Hauptentwickler Andrea Cardaci , war sehr und großartig. Ein großes Lob.
Siehe auch: Wie kann ich die GDB-Ausgabe während des interaktiven Debuggens hervorheben und einfärben?
quelle
Geben Sie
layout
als Befehl in gdb ein und das geteilte Fenster wird angezeigt.quelle
Wenn sich GDB im Standardmodus befindet, wechselt die Verwendung
win
automatisch in den TUI-Modus.Anderer Befehl für den TUI-Modus:
info win
Listen Sie die Größe aller angezeigten Fenster auf und geben Sie sie an.
focus next | prev | src | asm | regs | split
Setzen Sie den Fokus auf das benannte Fenster. Mit diesem Befehl können Sie das aktive Fenster so ändern, dass die Bildlauftasten in ein anderes Fenster verschoben werden können.
Lesen Sie hier weitere Hilfe.
quelle
Es gibt auch ein Schnittstellen-Tool für GDB namens cgdb. Auch mit etwas Farbhervorhebung. "ESC", um zur Codeansicht zu wechseln, "i", um zurück zur GDB zu wechseln
quelle
Der Tui-Modus war eindeutig von Emacs inspiriert - ich habe ihn zufällig entdeckt, als ich ^ Xo drückte, das in Emacs zwischen geteilten Fenstern wechselt - manchmal habe ich das abwesend getroffen, wenn ich zu einem anderen Programm wechseln sollte. Dies führt jedoch zu einer weiteren Funktion, die noch nicht erwähnt wurde: Sie können den Cursor mit ^ Xo vom Codefenster (in dem Sie scrollen können) zur Befehlszeile oder umgekehrt bewegen.
quelle