Gibt es eine C ++ gdb GUI für Linux? [geschlossen]

210

Kurz gesagt: Kennt jemand eine GUI für gdb, die es auf die gleiche oder nahe an den Funktionsumfang bringt, den Sie in der neueren Version von Visual C ++ erhalten?

Im Detail: Als jemand, der viel Zeit mit Programmieren in Windows verbracht hat, ist einer der größeren Stolpersteine, die ich gefunden habe, wenn ich C ++ unter Linux codieren muss, dass das Debuggen von Dingen mit der Befehlszeilen-GDB mehrmals länger dauert als in Visual Studio, und es scheint mit dem Üben nicht besser zu werden. Einige Dinge sind einfach einfacher oder schneller grafisch auszudrücken.

Insbesondere suche ich eine GUI, die:

  • Behandelt alle Grundlagen wie das Übersteigen und Eingeben von Code, das Überwachen von Variablen und Haltepunkten
  • Versteht den Inhalt komplexer und verschachtelter C ++ - Datentypen und kann ihn anzeigen
  • Wird nicht verwirrt und kann vorzugsweise intelligent durch Vorlagencode- und Datenstrukturen gehen, während relevante Informationen wie die Parametertypen angezeigt werden
  • Kann Thread-Anwendungen verarbeiten und zwischen verschiedenen Threads wechseln, um den Status von zu durchlaufen oder anzuzeigen
  • Kann zusätzlich zum Starten des Programms in gdb das Anhängen an einen bereits gestarteten Prozess oder das Lesen eines Core-Dumps übernehmen

Wenn es ein solches Programm nicht gibt, würde ich gerne von Erfahrungen hören, die Menschen mit Programmen gemacht haben, die zumindest einige der Stichpunkte erfüllen. Hat jemand irgendwelche Empfehlungen?

Bearbeiten: Das
Auflisten der Möglichkeiten ist großartig, und ich werde nehmen, was ich bekommen kann, aber es wäre noch hilfreicher, wenn Sie in Ihre Antworten aufnehmen könnten:
(a) Ob und ob Sie diese GUI tatsächlich verwendet haben oder nicht , welches positive / negative Feedback Sie dazu haben.
(b) Wenn Sie wissen, welche der oben genannten Funktionen unterstützt werden / nicht

Listen sind leicht zu bekommen, Websites wie diese sind großartig, weil Sie sich ein Bild von den persönlichen Erfahrungen der Leute mit Anwendungen machen können.

HappyDude
quelle
21
+1 für "Websites wie diese sind großartig, weil Sie sich ein Bild von den persönlichen Erfahrungen der Menschen machen können." Zu viele Leute machen heutzutage einfach einen Listen-Dump, den IMHO völlig verfehlt.
kizzx2
1
Zum Reverse Engineering: reverseengineering.stackexchange.com/questions/1392/…
Ciro Santilli 10 冠状 病 六四.
Sehen Sie sich diese Liste der gdb-Frontends hier an: sourceware.org/gdb/wiki/GDB%20Front%20Ends , und geben Sie dem ersten in der Liste eine Chance . Sieht sehr vielversprechend und modern aus und ist plattformübergreifend, da es browserbasiert ist: gdbgui.com .
Gabriel Staples

Antworten:

55

Sie werden nichts finden , das GDB überlagert und mit der Leistung des Visual Studio-Debuggers mithalten kann. Es ist einfach zu leistungsfähig und einfach zu gut in die IDE integriert.

Versuchen Sie für eine Linux-Alternative DDD, wenn freie Software Ihr Ding ist.

Vicent Marti
quelle
2
WinDBG ist weit überlegen als Visual Studio. Der Visual Studio-Debugger befindet sich auf derselben Architektur wie WinDBG. Trotzdem hat GDB beim Vergleich mit Windbg nichts zu fragen. Ein grafischer Debugger, der besser als DDD ist, wäre großartig. Eclipse CDT ist eine gute Alternative. Ich denke, es gab eine KDE UI
Bigmonachus
114
Oh schau. Eine Antwort, die einen Anspruch erhebt, ohne ihn zu sichern. Ich finde es auch seltsam, dass die Antwort, die die Frage nicht beantwortet, akzeptiert wurde.
Alternative
3
Wenn Sie hierher kommen und nach einer echten Antwort suchen, wissen Sie, dass ddd Müll ist. Die beste Debugger-GUI für Linux, die ich gefunden habe, ist IDA, keine freie Software.
Bkconrad
1
Beantworten Sie die Frage so gut wie möglich oder sagen Sie nichts. Nachdem ich beide verwendet habe, ist Visual Studio mehr mit Funktionen ausgestattet, aber DDD ist gut genug, dass ich VS nicht vermisse. Leider zeigt DDD sein Alter.
Alan De Smet
6
Dieser Beitrag muss aktualisiert / verbessert werden. Qt Creator ist fantastisch, genauso wie Visual Studio.
Vharron
85

Eclipse CDT bietet eine Erfahrung, die mit der Verwendung von Visual Studio vergleichbar ist. Ich verwende Eclipse CDT täglich zum Schreiben von Code und zum Debuggen lokaler und entfernter Prozesse.

Wenn Sie mit der Verwendung einer Eclipse-basierten IDE nicht vertraut sind, ist die GUI etwas gewöhnungsbedürftig. Sobald Sie jedoch die für Eclipse einzigartigen GUI-Ideen (z. B. eine Perspektive) verstanden haben, wird die Verwendung des Tools zu einer schönen Erfahrung.

Das CDT-Tool bietet einen anständigen C / C ++ - Indexer, mit dem Sie schnell Verweise auf Methoden in Ihrer Codebasis finden können. Es bietet auch ein nettes Makro-Erweiterungstool und eingeschränkte Refactoring-Unterstützung.

In Bezug auf die Unterstützung des Debuggens kann CDT alles in Ihrer Liste ausführen, mit Ausnahme des Lesens eines Core-Dumps (dies wird möglicherweise unterstützt, aber ich habe nie versucht, diese Funktion zu verwenden). Außerdem sind meine Erfahrungen mit dem Debuggen von Code mithilfe von Vorlagen begrenzt, sodass ich nicht sicher bin, welche Erfahrungen CDT in dieser Hinsicht bieten wird.

Weitere Informationen zum Debuggen mit Eclipse CDT finden Sie in den folgenden Handbüchern:

Jon Ball
quelle
10
Das Lesen von Core Dumps wird unterstützt. (Es wird als Postmortem Debugger bezeichnet.)
Josh Kelley
Ich habe beim Debuggen von Eclipse CDT bessere Erfahrungen gemacht als in Visual Studios. Ich habe MSVC jedoch keine allzu große Chance gegeben.
Notlesh
3
Ich denke, dass QtCreator neben Eclipse erwähnt werden sollte, da es vergleichbar ist.
unsinnig
78

gdb -tui funktioniert in Ordnung, wenn Sie etwas GUI-artiges, aber dennoch zeichenbasiertes möchten.


quelle
45
Sie können auch in gdb mit dem Befehl '-' in den TUI-Modus (Text User Interface) wechseln. Zurück zur Eingabeaufforderung ist Strg-X Strg-A. Im TUI-Modus bewegen sich Auf, Ab, Links und Rechts durch die Quelle. Verwenden Sie Strg-P, Strg-N, Strg-F und Strg-B, um im Befehlszeilenverlauf zu navigieren.
Ben Combee
Genau das habe ich gesucht. Die Leistung der GDB-Befehlszeile mit einigen nützlichen Ansichten, die aktualisiert werden, wenn ich mich bewege.
Kevin Cox
7
Ein .gdbinit auf Sterioden gibt Ihnen eine wirklich beeindruckende charakterbasierte GUI mit Farbe: github.com/cyrus-and/gdb-dashboard
cs01
Ich mag GDB-Dashboard sehr , muss aber auch Voltron erwähnen .
unsinnig
3
@ Barry danke. Für alle Neugierigen gibt es hier einen Link: github.com/cs01/gdbgui . Es verfügt über eine ähnliche Datenstrukturanzeige wie DDD, eine Client / Server-Architektur zum einfachen Debuggen von Remotecomputern ohne X-Weiterleitung und die Möglichkeit, komplexe Variablen usw. zu untersuchen.
cs01
47

Schauen Sie sich den Nemiver C / C ++ Debugger an . Die Installation in Ubuntu (Developer Tools / Debugging) ist einfach.

Update: Neuer Link.

Sergey Shandar
quelle
Absolut fabelhaft , auch unterstützt mit apt: 'apt-get install nemiver'. Mein einziges Problem ist, dass das Erstellen aus Repo aufgrund eines "Kein Paket gconf-2.0 gefunden" fehlgeschlagen ist.
J Evans
Die Benutzeroberfläche ist recht klar und gut zu lesen, stürzt jedoch manchmal ab, wenn die Schnittstellenfunktionen v0.9.6 verwendet werden. Es akzeptiert auch debuggte Anwendungsparameter, was ich ddd immer noch nicht zulassen kann.
Wassermann Power
Auch für Fedora 30 verfügbar (mindestens). Ich bin gerade auf diese Frage gestoßen und nemiver.
user3236841
31

Qt Creator scheint gutes Zeug zu sein. Ein Kollege hat mir einen Weg gezeigt, wie ich es für das Debuggen einrichten kann:

  • Erstellen Sie ein neues Projekt, "Import eines Makefile-basierten Projekts".
  • Zeigen Sie auf Ihren Stammprojektordner (er indiziert Quellen darunter und ist beeindruckend schnell).
  • Gehen Sie zu den Projekteinstellungen und fügen Sie eine Ausführungskonfiguration hinzu. Geben Sie dann die zu debuggende ausführbare Datei und ihre Argumente an.
  • Qt Creator scheint darauf zu bestehen, Ihr Projekt vor dem Debuggen zu erstellen. Wenn Sie das nicht möchten oder make nicht verwenden, gehen Sie einfach zu Projekte -> Erstellen (linker Bereich) und entfernen Sie dann im rechten Bereich unter "Schritte erstellen" alle Schritte, einschließlich des standardmäßigen Schritts, wenn Sie haben das Projekt erstellt.

Das mag ein bisschen viel Arbeit für das Debuggen einer App sein, die ich bereits kompiliert habe, aber es lohnt sich. Der Debugger zeigt Threads, Stapel und lokale Variablen ähnlich wie Visual Studio an und verwendet sogar viele der gleichen Tastaturkürzel. Es scheint gut mit Vorlagen umzugehen, zumindest mit std :: string und std :: map. Das Anhängen an vorhandene Prozesse und Core-Dumps scheint unterstützt zu werden, obwohl ich es noch nicht getestet habe.

Denken Sie daran, dass ich es jetzt seit weniger als einer Stunde benutzt habe, aber ich bin bisher beeindruckt.

Soulman
quelle
29

Ich hasse die Idee der Windows-Entwicklung, aber der VC ++ - Debugger gehört zu den besten, die ich je gesehen habe. Ich habe kein GUI-Frontend gefunden, das dem VC-Frontend nahe kommt.

GDB ist großartig, wenn man sich erst einmal daran gewöhnt hat. Verwenden Sie es in Wut genug und Sie werden sehr kompetent. Ich kann in einem Programm herumflitzen und all die Dinge, die Sie aufgelistet haben, ohne großen Aufwand erledigen. Es dauerte ungefähr einen Monat, bis ich über eine SSH-Verbindung zu einem Remote-Server gelitten hatte, bevor ich mich darin auskannte. Ich würde aber nie zurückkehren.

DDD ist wirklich mächtig, aber es war ziemlich fehlerhaft. Ich fand es ziemlich oft eingefroren, als es Nachrichten von GDB erhielt, dass es nicht grok. Es ist gut, weil es ein GDB-Schnittstellenfenster hat, in dem Sie sehen können, was los ist, und auch direkt mit GDB interagieren können. DDD kann aus irgendeinem Grund nicht für eine Remote-X-Sitzung in meiner Umgebung verwendet werden (ein echtes Problem, da ich bei Unix-Entwicklung auf einem Thin Client sitze).

KDevelop folgte dem typischen KDE-Stil und stellte dem Benutzer ALLES zur Verfügung. Ich hatte auch nie Glück, Nicht-KDevelop-Programme in KDevelop zu debuggen.

Das Gnat Programming Studio (GPS) ist eigentlich ein ziemlich gutes Frontend für GDB. Es verwaltet nicht nur Ada-Projekte, es lohnt sich also auszuprobieren, wenn Sie einen Debugger benötigen.

Sie könnten Eclipse verwenden, aber es ist ziemlich schwer und viele erfahrene Unix-Leute, mit denen ich zusammengearbeitet habe (ich eingeschlossen), interessieren sich nicht viel für die Benutzeroberfläche, die nicht nur STFU ist und Ihnen aus dem Weg geht. Eclipse scheint auch viel Platz einzunehmen und wie ein Hund zu rennen.

Adam Hawes
quelle
2
Ich wollte nur mein Projekt einstecken, gdbgui ( github.com/cs01/gdbgui ). Da es sich um eine Client / Server-Architektur handelt, funktioniert das Debuggen von Remotecomputern ohne X-Sitzung. Es hat auch ein Terminal für die direkte Interaktion mit GDB und eine visuelle Darstellung von Datenstrukturen, ähnlich wie bei DDD.
CS01
Erfahrungsbezogene Vergleiche mit Vor- und Nachteilen. Genau das, was diese Frage braucht. ty
Heath Raftery
27

Ich benutze cgdb, einfach und nützlich

Kabeljau
quelle
16

Ich benutze DDD oft und es ist ziemlich mächtig, wenn Sie erst einmal gelernt haben, es zu benutzen. Eine Sache, die ich sagen würde, ist, es nicht über X über das WAN zu verwenden, da es viele unnötige Bildschirmaktualisierungen zu machen scheint.

Wenn Sie nicht mit GDB verbunden sind und nichts dagegen haben, ein wenig Geld aufzutreiben, würde ich TotalView ausprobieren. Es hat eine etwas steile Lernkurve (es könnte definitiv intuitiver sein), aber es ist der beste C ++ - Debugger, den ich jemals auf einer Plattform verwendet habe, und kann erweitert werden, um Ihre Objekte auf benutzerdefinierte Weise zu überprüfen (so dass Sie eine anzeigen können) STL-Liste als tatsächliche Liste von Objekten und nicht als Bündel verwirrender interner Datenelemente usw.)

Nick Bastin
quelle
Ich kann DDD überhaupt nicht dazu bringen, über Remote X zu arbeiten. stürzt gerade mit Xlib-Fehlern auf meinem Thin Client ab :(
Adam Hawes
totalview sieht nach einer praktikablen Alternative aus. Ich halte DDD nicht für besser als gdb curses interface.
Deft_code
8

Schauen Sie sich das Eclipse CDT-Projekt an. Es ist ein Plugin für Eclipse, das auf die C / C ++ - Entwicklung ausgerichtet ist und eine ziemlich funktionsreiche Debugging-Perspektive enthält (die hinter den Kulissen GDB verwendet). Es ist auf einer Vielzahl von Plattformen verfügbar.

user14636
quelle
7

Ähnlich komfortabel wie das Eclipse GDB-Frontend ist das Emacs-Frontend, das eng mit der Emacs-IDE verbunden ist. Wenn Sie bereits mit Emacs arbeiten, wird es Ihnen gefallen:

GDB Emacs Frontend

Johannes Schaub - litb
quelle
6

Ich habe KDbg verwendet (funktioniert nur unter KDE).

Codeguru
quelle
3
KDbg ist nicht auf KDE beschränkt.
Nobar
Das ist großartig . Ich frage mich, wo es die ganze Zeit gewesen ist.
Edmz
5

Ich habe ein paar verschiedene Guis für GDB ausprobiert und festgestellt, dass DDD das bessere von ihnen ist. Und obwohl ich keine anderen Nicht-GDB-Angebote für Linux kommentieren kann, habe ich eine Reihe anderer Debugger auf anderen Plattformen verwendet.

gdb erledigt die meisten Dinge, die Sie auf Ihrer Wunschliste haben. DDD setzt eine schönere Front auf sie. Zum Beispiel wird das Wechseln von Threads vereinfacht. Das Festlegen von Haltepunkten ist so einfach wie erwartet.

Sie erhalten auch ein CLI-Fenster für den Fall, dass Sie etwas Dunkles tun möchten.

Die einzige Funktion von DDD, die sich von allen anderen von mir verwendeten Debuggern abhebt, ist die "grafische Darstellung" von Daten. Auf diese Weise können Sie Strukturen, Objekte und Speicher als ziehbare Felder anzeigen und anordnen. Durch Doppelklicken auf einen Zeiger werden die dereferenzierten Daten mit visuellen Links zurück zum übergeordneten Element geöffnet.

Andrew Edgecombe
quelle
Funktioniert ddd mit Programmen mit Argumenten? Ich konnte es nicht dazu bringen, die Argumente zu übergeben ...
user3236841
Wenn ich mich richtig erinnere, kann DDD Ihnen ein Konsolenfenster direkt zu GDB geben. In der GDB-Konsole können Sie die Befehlszeilenargumente mit dem Befehl "set args xyz abc" festlegen.
Andrew Edgecombe
5

Qt Creator-on-Linux ist heutzutage sicherlich mit Visual Studio-on-Windows für C ++ vergleichbar. Ich würde sogar auf der Debugger-Seite besser sagen.

Marv
quelle
5

In dieser Liste fehlt eine IDE, die sehr effizient ist (ich habe sie in vielen C / C ++ - Projekten ohne Probleme verwendet): Netbeans .

Florent
quelle
Ich bevorzuge CGDB jetzt, wo ich mich daran gewöhnt habe, sehr, aber Netbeans war ein großartiger Sprungbrett von VS.
Zzxyz
3

Was durchlaufen werden kann, wird durch die von g ++ erzeugten Debugging-Informationen weitgehend eingeschränkt. Emacs bietet eine Schnittstelle zu gdb, mit der Sie es über die Symbolleisten / Menüs steuern und Daten in separaten Fenstern anzeigen sowie gdb-Befehle direkt eingeben können. Das CDT von Eclipse bietet ähnliche Tools. Ich habe von Anjuta und Code :: Blocks gehört, sie aber nie benutzt.

Allen
quelle
3

Als jemand, der mit Visual Studio vertraut ist, habe ich mir mehrere Open-Source-IDEs angesehen, um sie zu ersetzen, und KDevelop kommt der IMO am nächsten, die eine Visual C ++ - Person einfach einsetzen und verwenden kann. Wenn Sie das Projekt im Debugging-Modus ausführen, wird gdb verwendet, aber kdevelop übernimmt so ziemlich das Ganze, sodass Sie nicht wissen müssen, dass es gdb ist. Sie sind nur ein Schritt oder weisen Variablen Uhren zu.

Es ist leider immer noch nicht so gut wie der Visual Studio Debugger.


quelle
3

Sie erwähnen nicht, ob Sie Windows oder UNIX verwenden.

Auf UNIX-Systemen ist KDevelop gut, aber ich verwende KDbg, weil es einfach zu verwenden ist und auch mit Apps funktioniert, die nicht in KDevelop entwickelt wurden.

Eclipse ist auf beiden Plattformen gut.

Unter Windows gibt es ein großartiges Paket namens Wascana Desktop Developer , Eclipse CDT und MinGW, die alle für ein Minimum an Schmerzen gut verpackt und vorkonfiguriert sind. Es ist das Beste, was ich für die Entwicklung von GNU-Code unter Windows gefunden habe.

Ich habe all diese Debugger verwendet und keiner von ihnen ist so gut wie MS Dev Studio. Eclipse / Wascana ist wahrscheinlich das nächstgelegene, hat jedoch Einschränkungen, da Sie nicht in DLLs zugreifen können, und es ist nicht so gut, Variablen zu untersuchen.

Adam Pierce
quelle
3

Haben Sie sich jemals den DS-5-Debugger angesehen ?

Es gibt eine kostenpflichtige Version mit vielen hilfreichen Funktionen, aber Sie können die Community Edition auch kostenlos verwenden (was insbesondere für eingebettete Systeme auch sehr nützlich ist).

Ich habe eine positive Erfahrung mit diesem Tool beim Debuggen von Android-Anwendungen auf einem realen Gerät mit Eclipse.

Viktor Malyi
quelle
2

Der Code: Blocks C ++ IDE verfügt über einen grafischen Wrapper mit einigen der gewünschten Funktionen, die jedoch nichts mit der Leistung von VS zu tun haben.

Crobar
quelle
2

VisualGDB ist ein weiteres Visual Studio-Plugin zum Entwickeln und Debuggen von Anwendungen unter Linux und eingebetteten Plattformen.

Sergey Zhukov
quelle
1

KDevelop funktioniert ziemlich gut.

Harold Ekstrom
quelle
1

Haben Sie gdb -w mit cygwin gdb ausprobiert? Es wird vermutet, dass es eine Windows-Oberfläche gibt, die ziemlich gut funktioniert.

Das einzige Problem, das ich gefunden habe, ist, dass es auf meinem aktuellen Computer erst nach der Installation von ddd so lief. Ich vermute, dass es tcltk erfordert, das installiert wurde, als ich ddd installiert habe.

BubbaT
quelle
0

Die neueste Version von Geany unterstützt dies (allerdings nur unter Linux).

Milan Babuškov
quelle
0

Wenn Sie unter Visual Studio nach gdb suchen, überprüfen Sie WinGDB .

Dominic.wig
quelle
0

In den letzten 15 Monaten habe ich Insight verwendet (kam mit FC6). Es ist nicht großartig, es ist in Tcl / Tk geschrieben, aber es ist einfach und nützlich. DDD ist von ähnlicher Qualität / Nützlichkeit, aber etwas schwieriger zu verwenden (verschiedene GUI-Fallstricke und Auslassungen). Ich habe auch versucht, gdb in meine IDE SlickEdit zu integrieren. Es hat gut funktioniert (ich habe ungefähr 4 Stunden damit gespielt), aber ich mochte die GUI-Kontextwechsel nicht. Ich möchte, dass meine IDE während des Debuggens unverändert bleibt. Unter Windows verwende ich SlickEdit für IDE und Visual Studio Debugger zum Debuggen. Von 3: Insight, DDD und SlickEdit ist Insight meine erste Wahl. Ich verwende es> 95% der Zeit, Befehlszeilen-GDB und DDD machen die anderen 5% aus. Wenn ich die Chance bekomme, werde ich Eclipse irgendwann evaluieren. Mein Arbeits-PC scheint nicht über genügend RAM (nur 1 GB) zu verfügen, um Eclipse einigermaßen gut auszuführen.

Ich habe auch viel Lob für TotalView gehört, einschließlich der ersten Hand während eines Vorstellungsgesprächs. Ich habe Ende 2008 eine Bewertung für unser Unternehmen erhalten, aber am Ende sind wir nicht weitergegangen, da gdb für unsere Bedürfnisse gut genug war. und es ist frei und allgegenwärtig.

Radim Cernej
quelle
0

Verwenden Sie www.zero-bugs.com/ Zero Debugger, es erfordert C ++ 0x-Unterstützung von gcc

siddhusingh
quelle
1
www.zero-bugs.com/ Website ist
ausgefallen
0

Ich suchte nach einem Debugger, um ein laufendes Programm zu durchlaufen. Sprich: Anhängen. Das Programm wurde mit Eclipse erstellt, aber aufgrund einiger Multithreading-Hindernisse waren keine Quelldateien beliebt. Was auch immer.

Ich habe mich mit NetBeans sehr wohl gefühlt.

  • [debug] aus dem Menü -> Deugger anhängen ...
  • as process hat den zu debuggenden ausgewählt
  • als Projekt [neues Projekt]

Jetzt verschwindet das Fenster und Sie sehen nichts. vom Prozess trennen. Das Read Square "Stop" hilft.

  • Importieren Sie die Quelle aus dem Projekt als z. B. Ordner. "... / MyProject / src
  • Jetzt wird es in Ihrem Projekt angezeigt und Sie können Haltepunkte festlegen.
  • ttach wieder Debugger
  • wählte den Prozess zum Debuggen.
  • Der Debugger sollte anhalten, wenn das Programm den nächsten Haltepunkt erreicht.

Gehen Sie zu [Fenster] -> [Debuggen] -> Wird Ihr Fenster komfortabel.

Cutton Eye
quelle