Einführung
Seer – eine GUI-Oberfläche für gdb unter Linux. (Ernie Pasveer [email protected])
An diesem Projekt wird aktiv gearbeitet. Das Ziel ist eine einfache, aber dennoch ansprechende GUI für gdb.
Bitte melden Sie Fehler oder gewünschte Funktionen per E-Mail an mich oder erstellen Sie eine Aufgabe auf meiner
GitHub-Projektseite.
Installation
Seer kann entweder über einen Paketmanager oder aus dem Quellcode installiert werden.
[!NOTE]
Stellen Sie sicher, dass die Anforderungen erfüllt sind, bevor Sie installieren.
Anforderungen
Installation aus einem Paket
Verfügbar über die folgenden Paketmanager:
Pamac (Manjaro)
$ pamac install seer
zypper (openSUSE Tumbleweed)
$ zypper install seergdb
Flathub
Flathub-Website. Hier
$ flatpak install flathub io.github.epasveer.seer
Flatpak
Beta-Versionen von Seer. Seers Release-Seite auf GitHub.
Wichtig: flatpak-spawn --host, benötigt im GDB Launcher, um gdb auszuführen. Siehe https://github.com/epasveer/seer/issues/377#issuecomment-3620844808.
Laden Sie seer.flatpak herunter. Installieren Sie es:
$ flatpak install -y --bundle --user seer.flatpak
Snap
Beta-Versionen von Seer. Seers Release-Seite auf GitHub.
$ snap install seergdb_<version>.snap --dangerous
Installation aus dem Quellcode
(Empfohlen) Seer kann mit Qt6 erstellt werden, indem Sie den folgenden Anweisungen folgen.
https://github.com/epasveer/seer/wiki/Building-Seer---Qt6
Es kann vorerst weiterhin mit Qt5 erstellt werden, indem Sie den folgenden Anweisungen folgen.
https://github.com/epasveer/seer/wiki/Building-Seer---Qt5
NEUIGKEITEN
Schauen Sie sich Seers Wiki-Seite auf GitHub an.
- Version v1.17 wird die letzte Qt5-Veröffentlichung sein.
- Die nächste Veröffentlichung wird v2.0 sein und auf Qt6 basieren. Vorerst kann sie jedoch weiterhin mit Qt5 kompiliert werden.
- Wenn Sie den neuesten stabilen Qt5-Quellcode möchten, holen Sie sich v1.17 von hier: https://github.com/epasveer/seer/releases/tag/v1.17
Seer starten
Seer soll es ermöglichen, das zu debuggende Programm einfach von der Befehlszeile aus zu starten. gdb bietet mehrere
Methoden zum Debuggen eines Programms. Seer tut dies natürlich auch.
Gehen Sie zum Wiki, um alle Möglichkeiten zur Ausführung von Seer zu sehen.
https://github.com/epasveer/seer/wiki/Starting-Seer
GUI-Überblick
Beispiele für die verschiedenen Seer-Ansichten und Dialoge.
Hauptansicht
Die Hauptansicht von Seer sieht wie folgt aus:

-
Quelle/Funktion/Typen/Variablen/Bibliotheken
- Die Liste der Quell-/Header-Dateien, die im Programm verwendet wurden.
- Suche nach Funktionen, Typen und statischen Variablen.
Ein Doppelklick öffnet die Quelldatei.
- Die Liste der vom Programm referenzierten gemeinsam genutzten Bibliotheken.
- Die Liste der Quell-/Header-Dateien kann durchsucht werden. Dadurch wird die Liste der angezeigten Dateien „verkleinert“.
- Ein Doppelklick auf eine Datei öffnet sie im Code-Manager.
-
Variablen-/Register-Informationen
- Variablen- und Registerwerte anzeigen.
- „Logger“ – den Wert einer Variablen protokollieren. Manuell eingeben oder auf die Variable in der Datei doppelklicken,
die im Code-Manager geöffnet ist.
- „Tracker“ – eine Liste von Variablen erstellen, deren Wert immer dann angezeigt wird, wenn gdb einen Haltepunkt erreicht
(Schritt, Nächster, Fertig usw.). Wenn der Haltepunkt erreicht ist, zeigen alle Variablen in der Liste
ihren möglicherweise neuen Wert.
- „Register“ – die Werte aller CPU-Register anzeigen.
-
Code-Manager.
- Der große Bereich im mittleren Teil der Seer-GUI.
- Quelldateien werden in dieser Ansicht geöffnet.
- Text in einer Datei kann mit ^F durchsucht werden.
- Variablen können zum „Logger“ hinzugefügt werden, indem Sie auf den Variablennamen doppelklicken.
Ein Doppelklick mit gedrückter CTRL-Taste stellt der Variablen „“ voran.
Ein Doppelklick mit gedrückter SHIFT-Taste stellt der Variablen „&“ voran.
Ein Doppelklick mit gedrückter CTRL+SHIFT-Taste stellt der Variablen „&“ voran.
- Variablen können zum „Tracker“ hinzugefügt werden, indem Sie den Variablennamen auswählen, mit der rechten Maustaste klicken und
„Variable zum Tracker hinzufügen“ auswählen.
- Variablen können zum „Memory Visualizer“ hinzugefügt werden, indem Sie den Variablennamen auswählen, mit der rechten Maustaste klicken und
„Variable zum Memory Visualizer hinzufügen“ auswählen.
- Ein Breakpoint/Printpoint kann durch einen Rechtsklick auf eine bestimmte Zeile erstellt werden.
- Kann durch einen Rechtsklick auf eine bestimmte Zeile bis zu einer bestimmten Zeile ausgeführt werden.
- Registerkarten in dieser Ansicht können durch Doppelklicken auf eine Registerkarte abgelöst werden.
-
Breakpoints, Watchpoints, Catchpoints, Printpoints, manuelle gdb-Befehle und Protokolle.
- Der Bereich unterhalb des Code-Managers.
- Manuelle Befehle. Geben Sie manuell einen gdb- oder gdbmi-Befehl ein.
Die Befehle werden für die nächste Seer-Sitzung gespeichert.
- Breakpoint-Manager. Breakpoints erstellen und verwalten.
- Watchpoint-Manager. Watchpoints erstellen und verwalten.
Ein Watchpoint überwacht, wann auf eine Variable zugegriffen wird (Lesen, Schreiben, Lesen/Schreiben).
- Catchpoint-Manager. Catchpoints erstellen und verwalten.
Ein Catchpoint stoppt die Ausführung bei einem C++-throw/rethrow/catch-Aufruf.
- Printpoint-Manager. Printpoints erstellen und verwalten.
Ein Printpoint ist wie ein Breakpoint, ermöglicht es Ihnen jedoch, Variablen an diesem
Printpoint auszugeben. Siehe gdbs 'dprintf'-Aufruf.
- GDB-Ausgabe. Ein Protokoll aller Ausgaben des gdb-Programms selbst.
- Seer-Ausgabe. Ein Protokoll aller Ausgaben des Seer-Programms selbst. Als Diagnose.
- Registerkarten in dieser Ansicht können durch Doppelklicken auf eine Registerkarte abgelöst werden.
-
Stack-Frame-Informationen.
- Stack-Frame-Liste. Ein Frame kann doppelgeklickt werden, um den Gültigkeitsbereich (die aktuelle Funktion) zu ändern.
- Stack-Frame-Argumente. Für jeden Frame die an jede Funktion übergebenen Argumente ausgeben.
- Stack-Lokale. Für die aktuelle Funktion die Werte der lokalen Variablen ausgeben.
-
Thread-Informationen.
- Thread-IDs. Eine Liste aller Threads. Doppelklicken Sie auf eine Thread-ID, um den Gültigkeitsbereich (den aktuellen Thread) zu ändern.
- Thread-Frames. Für jeden Thread dessen Stack-Frames auflisten.
-
Unterstützt gdbs Reverse-Debugging-Modus.
- Befehlsaufzeichnung ein- oder ausschalten.
- Wiedergaberichtung auf Vorwärts oder Rückwärts setzen.
Öffnen-Dialog