Frage:
Anständige GUI für GDB
mrduclaw
2013-03-30 07:30:22 UTC
view on stackexchange narkive permalink

Das Erlernen der GDB-Befehle steht auf meiner Bucket-Liste. Gibt es in der Zwischenzeit einen grafischen Debugger für * nix-Plattformen, der Windbg-Befehle akzeptiert und über ähnliche Funktionen verfügt? 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 haben?

@AshRj ah, ich verstehe, was du jetzt meinst. Mein Fehler, Entschuldigung.
[Voltron] (http://ho.ax/posts/2013/06/voltron-a-hacky-ui-for-gdb/) ist völlig neu, scheint aber vielversprechend zu sein (ich habe es noch nicht getestet).
Auf SO: http://stackoverflow.com/questions/79023/is-there-a-c-gdb-gui-for-linux
Siebzehn antworten:
#1
+59
cs01
2016-09-26 05:26:05 UTC
view on stackexchange narkive permalink

Ich habe mein eigenes GDB-Frontend namens gdbgui gestartet. Hierbei handelt es sich um einen Server (in Python), mit dem Sie in Ihrem Browser auf ein Frontend mit vollem Funktionsumfang 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.

Ausführen

Geben Sie einfach

  gdbgui  

in Ihr Terminal ein, und Ihr Browser öffnet einen neuen Tab

Funktionen

  • Haltepunkte setzen / entfernen
  • Quellcode anzeigen, mit optionalem Inline-Maschinencode
  • Aktuellen Frame im Stapel auswählen
  • Schritt durch Quellcode oder Maschinencode
  • Variablen erstellen / erkunden
  • Threads anzeigen / auswählen
  • Durchsuchen des Speichers
  • Register anzeigen
  • volle Funktionalität des GDB-Terminals, damit Sie herkömmliche GDB-Befehle senden und das von der AMA inspirierte Layout der GDB / minderwertigen Programmausgabe
  • anzeigen können zing Chrome-Debugger
  • kompatibel mit Mozillas RR für Reverse-Debugging
Das 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 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, ein nettes Add-On Es ist möglich, die 'Register'-Größe zu verkleinern. Alle Informationen sind verfügbar, aber (zumindest bei ARM) können Sie nicht alle Register gleichzeitig sehen, sodass Sie einen Bildlauf durchführen müssen.
Die Kommentare hier sind nicht für die individuelle Unterstützung von "gdbgui". Bitte öffnen Sie eine neue Frage auf sx oder verwenden Sie den gdbgui-Support-Kanal / Bug-Tracker.
#2
+46
mncoppola
2013-03-30 08:09:56 UTC
view on stackexchange narkive permalink

Obwohl sich einige Leute nicht für die Benutzeroberfläche interessieren, ist es erwähnenswert, dass GDB auch eine eigene integrierte Benutzeroberfläche (TUI) hat.

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

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

#3
+32
Archenoth
2013-04-04 08:50:08 UTC
view on stackexchange narkive permalink

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

GDB support in Emacs

Es ist nicht allzu schwer zu verwenden, erlaubt Ihnen So setzen Sie Haltepunkte visuell (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 Views

Es ermöglicht auch Feinheiten wie das Überprüfen von Werten durch Bewegen der Maus darüber:

Mouseover values

Um es zu verwenden, müssen Sie zuerst mit Cx Cf zum Ordner Ihrer Binärdatei navigieren, dann mit Mx gdb (das ist " Alt + X "und 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" <> "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 info

Es ist ein 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 der M-x-Version in Emacs zurückgegeben werden.)

Das ist Spacemacs und nicht GNU Emacs, oder?
Nee. Das ist einfach der alte GNU Emacs, ich habe meinen nur so gestaltet, dass er so aussieht. 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 sich dadurch die GDB-Nutzung ändert.)
#4
+27
joxeankoret
2013-03-30 15:12:24 UTC
view on stackexchange narkive permalink

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

Ich würde eigentlich empfehlen, IDAs `linux_server` über Remote-GDB zu verwenden, es 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 die gesamte Leistung von IDA (Plugins, IDAPython-Scripting, bekannte GUI, ...) haben und nicht nur ein Frontend für GDB sind.
#5
+21
0xC0000022L
2013-04-02 05:58:50 UTC
view on stackexchange narkive permalink

Selbst bei dem Risiko schwerer Abstimmungen möchte ich mich der einfachen alten gdb -Aufforderung anschließen und gegen ein GUI-Frontend empfehlen. Ich habe vor einigen Jahren angefangen, die fortgeschrittenere Verwendung von GDB zu lernen, indem ich Art of Debugging gelesen habe. Es beschreibt GDB und DDD sowie Eclipse als Frontends für GDB.

Zugegeben, ich verwende Vim die meiste Zeit als meine IDE auf dem Terminal und tmux (früher ) Bildschirm mit byobu ). Daher wechsle ich zwischen den Fenstern in meinem Terminal-Multiplexer, um schnell zwischen Code und Debugger zu wechseln. Die GDB-Eingabeaufforderung - nach einigen Wochen des Testens der TUI - enthält in der Tat alles, was ich mir jemals gewünscht habe, und Sie sollten bedenken, dass Sie mehrere Vorgänge an denselben Prozess anhängen können (und dabei den Speicher so betrachten, wie Sie ihn beschreiben).

Es scheint, dass alle Frontends ein wenig zurückbleiben - 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 WinDbg-Befehle akzeptiert. 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. In WinDbg gibt es viele Dinge, die spezifisch für die Funktionsweise von Windows, den Windows-Kernel usw. sind. GDB ist viel allgemeiner.

#6
+18
omghai2u
2013-03-30 07:39:53 UTC
view on stackexchange narkive permalink

Ich möchte DDD vorschlagen.

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

Ich habe "DDD" verwendet und war kein Fan. Ich werde QtCreator ausprobieren, 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, ist aber sehr leistungsfähig.
#7
+11
fG-
2013-04-01 19:42:21 UTC
view on stackexchange narkive permalink

Keine grafische Benutzeroberfläche, aber 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 musste mich zum ersten Mal mit gdb auseinandersetzen. Ich hasste es 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.

Sie sollten eine Offenlegung schreiben, dass Gdbinit eine Software ist, die Sie warten ...
Damit? 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 nicht für Ihre nützlichen Tools werben, die Probleme lösen, und müssen darauf warten, dass andere dies tun? Das ist ein wirklich seltsamer Denkmodus für eine Problemlöser- "Community".
@fG- lesen Sie bitte die FAQ: http://reverseengineering.stackexchange.com/faq#promotion
#8
+10
Mellowcandle
2013-03-30 12:42:53 UTC
view on stackexchange narkive permalink

Ich mag DDD nicht wirklich, es sind so 90er Jahre in der GUI.

Ich möchte KDBG empfehlen, ein KDE-Frontend für gdb.Besides, vielleicht möchten Sie einen Blick darauf werfen Cgdb, eine Fluch-Erweiterung für gdb.

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

Funktioniert KDBG auch zum Zerlegen und Debuggen ohne Quelle? Ihre Screenshots zeigten nur Quellcode.
Ich weiß nicht, habe es noch nie versucht ...
"Es ist so 90er in seiner GUI" ... eher wie 80er
Ist das Erscheinungsbild der GUI der einzige Nachteil?
#9
+7
jlhonora
2013-05-08 21:15:02 UTC
view on stackexchange narkive permalink

cgdb ist auch eine großartige Option, wenn Sie Vim verwenden.

cgdb teilt viele Befehle mit vim, wie 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.

#10
+5
Runium
2013-06-22 04:54:49 UTC
view on stackexchange narkive permalink

Normalerweise verwende ich Vim + gdb im CLI-Modus beim Codieren usw. Manchmal ist jedoch eine grafische Benutzeroberfläche 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 weiter einrichten, um Variablen (im Code) unter dem Cursor usw. auszuwerten.

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 = 123set var xyz = 'q'  

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

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 oder Release) .- Unpack.- ./configure - -exec-prefix = / blahblah / codeblocks --prefix = / blahblah / codeblocks- make- sudo make install 2>&1 | tee my_install.log  

Code::Blocks with GDB

#11
+4
R.Chatsiri
2013-06-26 09:21:51 UTC
view on stackexchange narkive permalink

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.

#12
+3
Xiao Ming
2015-06-12 05:12:53 UTC
view on stackexchange narkive permalink

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

#13
+3
0xec
2015-06-12 21:11:55 UTC
view on stackexchange narkive permalink

Es gibt eine Affnic Debugger-Benutzeroberfläche. 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 ist als grafische Benutzeroberfläche für verschiedene Debugger konzipiert. Dieser Build richtet sich speziell an GDB, den GNU-Debugger. Mit den grafischen Fenstern kann ADG die volle Leistung von Debuggern freisetzen, indem mehrere Arten von Informationen in einer Ansicht angezeigt und Debugger mit einem einfachen Klick manövriert werden. ADG bietet auch ein integriertes Befehlsterminal, über das Benutzer den Debugger-Befehl direkt eingeben können. ADG ist unter Linux / Windows / Mac OS X verfügbar.

#14
+3
Sergiy Migdalskiy
2018-02-10 08:31:58 UTC
view on stackexchange narkive permalink

VisualStudio.Code ( VS.Code) läuft unter Linux und verfügt über die Erweiterung "Native Debug", 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 identisch (F5, Shift-F5, F10, F11).

Die Installation erfolgt mit zwei Klicks (eine zum Installieren von VS.Code, die andere zum Installieren der Erweiterung). , ideal für jemanden, der aus Windows Visual Studio kommt und sofort produktiv sein möchte.

#15
+2
atdre
2016-09-05 01:57:32 UTC
view on stackexchange narkive permalink

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

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

#16
+2
BullyWiiPlaza
2017-01-17 14:39:06 UTC
view on stackexchange narkive permalink

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

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

#17
+1
Oğuzhan Eroğlu
2020-01-22 20:43:11 UTC
view on stackexchange narkive permalink

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

Vollständige Offenlegung: Ich bin der Entwickler.



Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...