Zurück zu den Updates
New releaseSep 1, 2026

seer snap-latest

Seer - eine grafische Benutzeroberfläche für gdb

Teilen

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

  • Linux

  • C++17

  • gdb mit „mi“-Interpreter (überprüfen durch Ausführen von: gdb --interpreter=mi)

  • CMake (3.5.0 oder neuer)

  • QT6

  • QT5

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

Wenn der Dialog zum Öffnen der ausführbaren Datei aufgerufen wird, sieht er wie folgt aus:

Seer-Konsole

Die gesamte Textausgabe der ausführbaren Datei wird an die Seer-Konsole gesendet. Die Texteingabe für die ausführbare Datei kann ebenfalls über die Konsole erfolgen.

Assembly-Ansicht

Normalerweise zeigt Seer den Quellcode nur als Registerkarten im Code-Manager an. Die Assembly des Programms kann ebenfalls als Registerkarte angezeigt werden.

Wählen Sie „Ansicht->Assembly-Ansicht“ und eine zusätzliche Registerkarte wird neben den Quellcode-Registerkarten angezeigt, die die aktuell ausgeführte Assembly zeigt. Hier ist ein Beispiel.

Wie bei den Quellcode-Registerkarten können in der Assembly-Registerkarte Breakpoints gesetzt werden. Die aktuelle Anweisung wird hervorgehoben.

Ein Doppelklick auf Einträge in der Registerkarte „Breakpoints“ und der Registerkarte „Stack-Frames“ zeigt die Assembly für diese Adressen.

Es gibt „Nexti“- und „Stepi“-Hotkeys, wie in Ihren Konfigurationseinstellungen definiert. Normalerweise „Ctrl+F5“ und „CTRL+F6“. Die Verwendung von „^F“ in der Assembly-Registerkarte zeigt eine leistungsstarke Suchleiste.

Die Assembly-Funktion in Seer ist neu. Fühlen Sie sich frei, Änderungen/Funktionen vorzuschlagen.

Memory Visualizer

Wenn Sie den Inhalt des Rohspeichers im Memory Visualizer betrachten, sieht dies wie folgt aus:

SpeicherDisassembly

Array Visualizer

Wenn Sie den Inhalt von Arrays im Array Visualizer betrachten, sieht dies wie folgt aus:

NormalSplineStreuung

Zwei Arrays können als X-Y-Diagramm verwendet werden. Beispielsweise bildet dieses einfache 'points'-Array die X-Y-Kontur einer Form.

    int main() {
        int points[] = {50,1,20,91,97,35,2,35,79,91,50,1};
        return 0;
    }
X-WerteY-WerteXY-Werte

Struct Visualizer

Wenn Sie den Inhalt einer C/C++-Struktur oder einer C++-Klasse im Struct Visualizer betrachten, sieht dies wie folgt aus. Dieses Beispiel zeigt den Inhalt von „*this“ für die aktuelle C++-Klasse, in der sich Seer befindet. Alle Strukturmember, die Basistypen sind, können bearbeitet werden.

Es gibt auch einen Basic Struct Visualizer, der leichtergewichtig ist, aber keine Zeiger verfolgen kann und nicht bearbeitet werden kann.

Image Visualizer

Wenn Sie den Inhalt von Rohspeicher betrachten, der ein Bild ist, kann der Image Visualizer verwendet werden.

Support/Kontakt

Senden Sie eine E-Mail an [email protected] für Fehler oder Funktionen. Oder erstellen Sie eine Aufgabe auf meiner GitHub-Projektseite.

Stargazers

Es ist eine wunderbare Welt.

Kategorien