Das Erlernen der GDB-Befehle steht auf meiner Bucket-Liste, aber in der Zwischenzeit gibt es einen grafischen Debugger für * nix-Plattformen, die akzeptiert Windbg-Befehle und hat ähnliche Funktionen? Zum Beispiel die Möglichkeit, mehrere bearbeitbare Speicherfenster herauszubringen, beim Schritt automatisch um einen Bereich herum zu zerlegen, die Disassemblierungsvariante festzulegen und ein Fenster mit Registern mit bearbeitbaren Werten zu erstellen?

Kommentare

Antwort

Ich habe mein eigenes GDB-Frontend mit dem Namen gdbgui gestartet Server (in Python), mit dem Sie auf ein voll ausgestattetes Frontend in Ihrem Browser zugreifen können.

gdbgui-Screenshot

Installieren

pip install gdbgui --upgrade 

oder Download unter gdbgui.com

Funktioniert auf allen Plattformen (Linux, MacOS und Windows) und Browsern mit JavaScript.

Führen Sie

Geben Sie einfach

gdbgui 

in Ihr Terminal ein und Sie Der Browser öffnet eine neue Registerkarte.

Funktionen

  • Haltepunkte setzen / entfernen
  • Quellcode anzeigen, mit optionalem Inline-Maschinencode
  • aktuellen Frame im Stapel auswählen
  • Schritt durch Quellcode oder Maschinencode
  • Variablen erstellen / untersuchen
  • Threads anzeigen / auswählen
  • Speicher durchsuchen
  • Register anzeigen
  • volle Funktionalität des GDB-Terminals, damit Sie senden können traditionelle gdb-Befehle und das Layout der gdb / minderwertigen Programmausgabe
  • anzeigen, inspiriert vom erstaunlichen Chrome-Debugger
  • , der mit Mozillas RR kompatibel ist, für das Reverse-Debugging

Kommentare

  • Dies ist wirklich eine gute Arbeit. Das Design bringt den Kern des durchschnittlichen Anwendungsfalls auf den Punkt. Ich mag das. Es unterstützt auch das Remote-Debugging (oder besser gesagt, es unterstützt die Verwendung des Befehls target remote host:port gdb. Gut gemacht. Vielleicht wäre das Hinzufügen der Möglichkeit, eine Verbindung zu einem Remote-Host im Menü herzustellen, eine nette Ergänzung -on. Wäre es möglich, die Registergröße ‚ zu verkleinern? Alle Informationen sind verfügbar, aber (zumindest bei ARM) können Sie ‚ Es werden nicht alle Register gleichzeitig angezeigt, daher müssen Sie einen Bildlauf durchführen.
  • Die Kommentare hier gelten nicht für die individuelle gdbgui -Unterstützung. Bitte öffnen Sie eine neue Frage zu sx oder benutze den gdbgui-Support-Kanal / Bug-Tracker.

Antwort

Obwohl einige Leute nicht “ Um sich nicht um die Schnittstelle zu kümmern, ist es erwähnenswert, dass GDB auch eine eigene integrierte GUI hat (TUI genannt).

Sie können GDB im GUI-Modus mit dem folgenden Befehl starten: gdb -tui

Eine Kurzreferenz zu TUI-Befehlen finden Sie hier: http://beej.us/guide/bggdb/#qref

Antwort

Ich habe Emacs GUD im Allgemeinen als GDB-Frontend verwendet.

GDB-Unterstützung in Emacs

Die Verwendung ist nicht allzu schwierig. Sie können Haltepunkte visuell festlegen (oder über das GDB-Fenster, wenn Sie dies bevorzugen).

Es verfügt über mehrere verschiedene Ansichten, auf die Sie über ein GDB-Menü der obersten Ebene zugreifen können:

GUD-Ansichten

Es ermöglicht auch Feinheiten wie das Überprüfen von Werten, indem Sie mit der Maus darüber fahren:

Mouseover-Werte

Um es verwenden zu können, müssen Sie zuerst zu navigieren den Ordner Ihrer Binärdatei mit C-x C-f, dann M-x gdb (Das ist „Alt + X“ Geben Sie dann „gdb„) ein. Anschließend können Sie eine GDB-Befehlszeile eingeben oder einfach [Enter] drücken, um die Standardeinstellung zu übernehmen. Von dort aus geben Sie einfach „Start“ in das GDB-Fenster mit allen Parametern ein, die Sie an das Programm übergeben möchten, das Sie debuggen.

Danach sind Sie ziemlich golden, aber mit nur einer Ansicht. In den Menüs am oberen Bildschirmrand unter „GUD“ können Sie andere relevante Ansichten für alles öffnen, was Sie debuggen möchten.(Frames sind separate Fenster und „Windows“ sind In-Frame-Fenster.)

Normalerweise wird beim Programmstart standardmäßig ein Haltepunkt festgelegt, und Sie können dann entweder mit den Schaltflächen oben in Ihrem Code navigieren Im Fenster oder wenn Sie keinen Code haben, können Sie Ihre Ansicht so anpassen, dass Sie eine Demontage der angezeigten Binärdatei durchführen können.

Die Schaltflächen am oberen Rand des Fensters sind von „{}“ umgeben „sind für Schritte auf Codeebene vorgesehen, und die Schaltflächen mit dem Symbol“ <> „in ihrem Symbol dienen zum Debuggen auf Befehlsebene. Sie sollten sich also wahrscheinlich auf die linke Seite konzentrieren, wenn Sie normales Code-Debugging durchführen, und sich mehr auf die rechte Seite konzentrieren, wenn Sie sich auf das Wesentliche konzentrieren.

Auch wenn Sie sich jemals verlaufen, Dieses Symbol:

GUD-Informationen

Es handelt sich um eine ganzes Buch, das wahrscheinlich Ihre Fragen beantworten kann. Das einzige Mal, dass es in Emacs nicht existiert, ist, wenn Sie auf Debian sind (Ubuntu ist in Ordnung) und Emacs von seinen Repos installiert haben. In diesem Fall müssen Sie „emacs<vesrsion>-common-non-dfsg“ installieren. um die Handbücher zu erhalten. (Mit „<version>“ sind die nicht dezimalen Ziffern, die von M-x version in Emacs zurückgegeben werden)

Kommentare

  • Dies ist Spacemacs und nicht GNU Emacs, oder?
  • Nein. Dies ist einfach ‚ ol GNU Emacs, ich habe nur meine so gestaltet. Nichts, was ich oben erwähnt habe, ist spezifisch für meine Konfiguration. (Und tatsächlich ist Spacemacs auch nur eine Reihe von Emacs-Konfigurationen, aber ich habe keine Ahnung, ob es die GDB-Nutzung ändert.)
  • Das ‚ ist nicht auf Lager Emacs. Welches Betriebssystem und welche Pakete verwenden Sie?
  • Sieht so aus, als hätten Sie das Power Line-Paket unter installiert andere Dinge. emacswiki.org/emacs/PowerLine
  • @mrbean Dies unter Linux Mint und ja, ich denke mein Emacs-Thema 2013 war base16-morgen mit PowerLine (übrigens gute Anerkennung!)

Antwort

Meine Meinung ist ein bisschen voreingenommen, aber für das Debuggen von Assemblern ist IDA das beste GDB- „Frontend“ (es unterstützt die Kommunikation mit entfernten GDB-Zielen). Für das Debuggen von Quellcode würde ich jedoch KDBG empfehlen.

Kommentare

  • Ich würde tatsächlich die Verwendung von IDA ‚ s linux_server über Remote-GDB, ‚ ist leistungsfähiger und schneller (da es ein binäres Protokoll verwendet und kein textbasiertes ).
  • Bitte begründen Sie Ihre Empfehlung. Die Antworten sind nicht nur für das OP geschrieben, sondern für alle anderen Personen, die in Zukunft möglicherweise darauf stoßen.
  • Grundsätzlich, weil Sie über die gesamte Leistung von IDA verfügen (Plugins, IDAPython-Scripting, bekannte GUI ,. ..) und ist nicht nur ein Frontend für GDB.

Antwort

Selbst bei der Gefahr schwerer Abstimmungen Ich möchte mich der einfachen alten Eingabeaufforderung gdb anschließen und gegen ein GUI-Frontend empfehlen. Ich begann mit dem Erlernen der fortgeschritteneren Verwendung von GDB, indem ich Art of Debugging vor einigen Jahren. Es beschreibt GDB und DDD sowie Eclipse als Frontends für GDB.

Zugegeben, ich verwende Vim die meiste Zeit als meine IDE auf der Terminal und tmux (früher screen mit byobu). Daher wechsle ich zwischen den Fenstern in Mein Terminal-Multiplexer wechselt schnell zwischen Code und Debugger. Die GDB-Eingabeaufforderung – nach einigen Wochen des Versuchs der TUI – hat Inde Wenn Sie alles getan haben, was ich mir jemals gewünscht habe, sollten Sie bedenken, dass Sie mehrere Male an denselben Prozess anhängen können (und dabei das Gedächtnis so betrachten, wie Sie es beschreiben).

Es scheint, dass alle Frontends hinterherhinken ein wenig – keine Überraschung – und es ist sinnvoller, sich mit der GDB-Eingabeaufforderung und ihren Feinheiten und Kuriositäten auseinanderzusetzen. Denken Sie daran, dass es bei einem Bare-Metal-Setup möglicherweise das einzige ist, was Sie haben. Daher ist es sinnvoll, es zu lernen, auch wenn Sie nach Ihren eigenen Maßstäben eine „anständige“ Benutzeroberfläche finden.

Neuere Versionen von GDB unterstützen auch Python-Skripte und bieten dadurch eine sehr leistungsstarke Reihe von Tools zum Debuggen. Auch nur über die Befehlszeile.

Wenn Sie unbedingt auf der Verwendung eines GUI-Frontends bestehen möchten, würde ich IDA Pro auch empfehlen, weil es Ihnen ein einziges Frontend für eine Vielzahl von Debuggern bietet und Sie dies tun müssen Lernen (oder Anpassen) der Verknüpfungen nur einmal. Nachteile: Preis und Flexibilität, wenn Sie keine Lizenz auf einem bestimmten Computer haben oder keine Möglichkeit zum Tunneln zu einem GDB-Server usw. haben.


Mir ist kein Frontend von GDB bekannt das akzeptiert WinDbg-Befehle. Und ich kann nur noch einmal betonen: Sie werden die Früchte der Zeit ernten, die Sie sowieso in das Erlernen von Vanille-GDB investiert haben. Scheuen Sie sich nicht vor der Anstrengung. Es gibt viele Dinge in WinDbg, die spezifisch für die Funktionsweise von Windows, den Windows-Kernel usw. sind. GDB ist viel allgemeiner.

Antwort

Ich möchte DDD vorschlagen .

Wenn Sie Quellcode haben, sollten Sie QTCreator überprüfen. Der Debugger ähnelt dem von Visual Studio, wenn Sie damit vertraut sind.

Kommentare

  • I ‚ habe DDD verwendet und war nicht ‚ ein Lüfter. Ich ‚ werde QtCreator auschecken, danke!
  • DDD eignet sich hervorragend zum Anzeigen von Datenstrukturen. Sie können sie auf einer Tafel (einer Art Leuchttisch) auslegen ). Daher Datenanzeige-Debugger.
  • DDD sieht auf den ersten Blick seltsam und veraltet aus, aber ‚ ist wirklich mächtig.

Antwort

Keine grafische Benutzeroberfläche, sondern ein guter Ersatz, sobald Sie sich daran gewöhnt haben (und ich persönlich denke, dass es für die meisten Dinge schneller ist ) -> https://github.com/gdbinit/Gdbinit .

Ich erinnerte mich, als ich anfing, * nix umzukehren, und ich hatte Ich habe es gehasst und + mammon original „s gdbinit hat mir den Tag gerettet. Heutzutage bevorzuge ich gdb gegenüber den meisten GUI-Debuggern.

Probieren Sie es aus 🙂

Vollständige Offenlegung: Ich bin der Autor des Tools.

Kommentare

  • Sie sollten eine Offenlegung schreiben, dass Gdbinit eine Software ist, die Sie ‚ pflegen …
  • So? Es ‚ ist kostenlos und für jedermann verfügbar. Ich versuche hier nicht gerade etwas zu verkaufen. Meine Güte …!
  • @ fg- Das könnte immer noch Werbung sein, die nicht auf Erfahrung basiert, sondern ausschließlich auf der Tatsache, dass Sie dieses Tool geschrieben haben.
  • Sie können also ‚ Werben Sie nicht für Ihre nützlichen Tools, die Probleme lösen und darauf warten müssen, dass andere dies tun? Das ‚ ist ein wirklich seltsamer Denkmodus für einen Problemlöser. “ community „.
  • @ fG- Bitte lesen Sie die FAQ: reverseengineering.stackexchange.com/faq#promotion

Antwort

Ich mag DDD nicht wirklich, es ist so 90 „s in der GUI.

Ich würde Ich empfehle gerne KDBG, ein KDE-Frontend für GDB. Außerdem möchten Sie vielleicht einen Blick auf Cgdb werfen, eine Fluch-Erweiterung für gdb.

In letzter Zeit bin ich auf Nemiver gestoßen sieht wirklich vielversprechend aus.

Kommentare

  • Funktioniert KDBG auch zum Zerlegen und Debuggen ohne Quelle? Ihre Screenshots zeigten nur Quellcode.
  • Ich weiß nicht, ‚, habe es noch nie versucht …
  • “ es ‚ s so 90 ‚ s darin ‚ s GUI “ … eher wie 80 ‚ s
  • Ist das Erscheinungsbild der GUI der einzige Nachteil?

Antwort

cgdb ist ebenfalls Eine großartige Option, wenn Sie Vim verwenden.

cgdb teilt viele Befehle mit vim, z. B. die Regex-Suche und viele andere. Auf der cgdb-Homepage:

Die Tastaturoberfläche ist vim nachempfunden, sodass sich vim-Benutzer mit cgdb wie zu Hause fühlen sollten.

Antwort

Normalerweise verwende ich Vim + gdb im CLI-Modus beim Codieren usw. Aber manchmal ist eine GUI vorzuziehen.

Eine andere Option neben den genannten ist Code :: Blocks. Es verwendet GDB und CDB als Backend. Für GDB können Sie AT & T, Intel oder custom zur Demontage auswählen. Es unterstützt den gemischten Modus sowie die Auflistung reiner Anweisungen. Sie können es auch so einrichten, dass Variablen (im Code) unter dem Cursor usw. ausgewertet werden.

Es gibt nur ein Speicherauszugsfenster, aber Sie können zusätzlich raw GDB-Befehle in Befehlszeile unten, die im Fenster gedruckt wird – also z Speicherabbilder.

Es gibt ein separates Fenster für CPU-Register. Sie können nicht direkt bearbeitet werden. Sie können jedoch Werte über die angegebene Befehlszeile sowie andere Werte festlegen:

set $eax = 123 set var xyz = "q" 

Das Bild unten zeigt es in Aktion mit Quell-Debugging auf einer KVM (Link öffnen, um es in größerem Format anzuzeigen).

Ein Problem, das ich damit hatte, sind einige GUI-Fehler usw., wenn ich es unter Ubuntu 12 ausführe – UB 12 hat Version 10.10. Das Kompilieren und Installieren der aktuellen Version , 12.11, war jedoch schmerzlos.

ZB. für benutzerdefinierten Installationspfad installieren (Wenn Ihre Distribution nicht über eine aktuelle Version verfügt und Sie beide haben möchten):

- Download (SVN or release). - Unpack. - ./configure --exec-prefix=/blahblah/codeblocks --prefix=/blahblah/codeblocks - make - sudo make install 2>&1 | tee my_install.log 

Code :: Blöcke mit GDB

Antwort

Dieser Artikel von Dr. Dobbs zeigt ausführlich GUIs zum Debuggen unter Linux. Ich empfehle den Qt-Creator namens GDB Debug basierend auf der Linux-Umgebung.Wie auch immer, der Artikel behandelt nur das Debuggen von C ++ – Code, aber das reicht aus, um die Debugging-Funktionen von GDB zu demonstrieren.

Antwort

Ich werde empfehlen UltraGDB , ein GDB-GUI-Frontend und eine leichtgewichtige IDE, die auf der Eclipse-Technologie basiert.

Antwort

Es gibt Affnic Debugger GUI . Es ist nicht kostenlos, aber es gibt eine Lite-Version. Es ist für Windows, Linux & MacOS verfügbar.

Auf der offiziellen Website

Affinic Debugger GUI .aka. ADG wurde als grafische Benutzeroberfläche für verschiedene Debugger entwickelt. Dieser Build richtet sich speziell an GDB, den GNU-Debugger. Mit den grafischen Fenstern kann ADG die volle Leistung von Debuggern freisetzen, indem mehrere angezeigt werden Arten von Informationen in einer Ansicht und Manövrieren von Debuggern mit einfachem Klicken. ADG bietet auch ein integriertes Befehlsterminal, über das Benutzer Debuggerbefehle direkt eingeben können. ADG ist unter Linux / Windows / Mac OS X verfügbar.

Antwort

VisualStudio.Code ( VS.Code ) läuft unter Linux und hat eine „Native Debug“ -Erweiterung, mit der Sie gdb verwenden können. Es hat eine sehr reaktionsschnelle Benutzeroberfläche. Es ist extrem ressourcenschonend. Die Erfahrung kommt Visual Studio unter Windows für C ++ – Entwickler etwas nahe (es gibt jedoch keine Assemblyansicht). Die wichtigsten Debug-Verknüpfungen sind standardmäßig dieselben (F5, Shift-F5, F10, F11).

Die Installation erfolgt mit zwei Klicks (einer zum Installieren von VS.Code, der andere zum Installieren der Erweiterung). Dies ist ideal für Personen, die aus Windows Visual Studio kommen und sofort produktiv sein möchten.

Antwort

Es gibt Voltron , eine erweiterbare Python-Debugger-Benutzeroberfläche, die LLDB, GDB, VDB unterstützt und WinDbg / CDB (über PyKD) und läuft unter MacOS, Linux und Windows. Für die ersten drei unterstützt es x86, x86_64 und arm mit gerade arm64-Unterstützung für lldb, während es sogar PowerPC-Unterstützung für gdb hinzufügt.

Der Autor hat auch ein binäres Ninja-Plugin geschrieben, um Voltron zu integrieren – https://github.com/snare/binjatron – ermöglicht synchronisierte Ansichten.

Antwort

Beachten Sie, dass das Folgende nur für das Debuggen von Quellcode gilt.

CLion ist eine IDE mit gdb. Sie haben weiterhin die Möglichkeit, Befehle einzugeben, aber viele Funktionen sind nahtlos in der GUI implementiert, z. B. das Steppen, Anzeigen aktueller aktiver Variablen und Festlegen von breakpoints. Lesen Sie mehr here .

Antwort

Sie können GDBFrontend verwenden. Dies ist ein sehr hackbares GDB-Frontend.

Vollständige Offenlegung: Ich bin der Entwickler.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.