it-swarm-eu.dev

Gibt es eine C ++ - GDB-GUI für Linux?

Kurz gesagt: Kennt jemand eine GUI für GDB, die es auf die gleiche Stufe oder in die Nähe des Funktionsumfangs bringt, den Sie in der neueren Version von Visual C++ erhalten?

Im Detail: Als jemand, der viel Zeit mit dem Programmieren in Windows verbracht hat, ist einer der größeren Stolpersteine, die ich gefunden habe, wenn ich C++ in Linux codieren muss, dass das Debuggen von Dingen mit der Befehlszeile gdb mehrere Male länger dauert als in Visual Studio, und es scheint mit der Praxis nicht besser zu werden. Manche Dinge lassen sich einfach oder schneller grafisch ausdrücken.

Insbesondere suche ich eine GUI, die:

  • Erledigt alle Grundlagen wie das Über- und Einsteigen in Code, das Beobachten von Variablen und Haltepunkten
  • Versteht und kann den Inhalt komplexer und verschachtelter C++ - Datentypen anzeigen
  • Lässt sich nicht verwirren und kann vorzugsweise auf intelligente Weise durch Code- und Datenstrukturvorlagen gehen, während relevante Informationen wie die Parametertypen angezeigt werden
  • Kann mit Thread-Anwendungen umgehen und zwischen verschiedenen Threads wechseln, um den Status von zu durchlaufen oder anzuzeigen
  • Kann das Anhängen an einen bereits gestarteten Prozess oder das Lesen eines Core-Dumps handhaben, zusätzlich zum Starten des Programms in gdb

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

Edit:
Es ist großartig, die Möglichkeiten aufzulisten, und ich nehme, was ich bekommen kann, aber es wäre noch hilfreicher, wenn Sie Folgendes in Ihre Antworten aufnehmen könnten:
(a) Ob Sie diese GUI tatsächlich verwendet haben oder nicht und wenn ja, welche positiven/negativen Rückmeldungen Sie dazu haben.
(b) Wenn Sie wissen, welche der oben genannten Funktionen werden/werden nicht unterstützt

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

204
HappyDude

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

Als Linux-Alternative probieren Sie DDD aus, wenn freie Software Ihr Ding ist.

55
Vicent Marti

Eclipse CDT bietet eine Erfahrung, die mit der Verwendung von Visual Studio vergleichbar ist. Ich verwende täglich Eclipse CDT, um Code zu schreiben und lokale und entfernte Prozesse zu debuggen.

Wenn Sie nicht mit der Verwendung einer Eclipse-basierten IDE vertraut sind, ist die Benutzeroberfläche etwas gewöhnungsbedürftig. Sobald Sie jedoch die für Eclipse spezifischen GUI-Ideen (z. B. eine Perspektive) verstanden haben, wird die Verwendung des Tools zu einer angenehmen 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 Nice-Makro-Erweiterungstool und eingeschränkte Refactoring-Unterstützung.

In Bezug auf die Unterstützung für das Debuggen ist CDT in der Lage, alles in Ihrer Liste zu tun, mit Ausnahme des Lesens eines Core-Dumps (dies wird möglicherweise unterstützt, ich habe jedoch 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:

84
Jon Ball

gdb -tui funktioniert in Ordnung, wenn Sie etwas GUI-ish wollen, aber immer noch zeichenbasiert.

78
Carleton

Check out Nemiver C/C++ Debugger . Es ist einfach in Ubuntu zu installieren (Developer Tools/Debugging).

Update: Neuer Link.

47
Sergey Shandar

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 in die Nähe des VC eins 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 erledigen, die Sie aufgelistet haben, ohne viel Aufwand. Es dauerte ungefähr einen Monat, bis ich über eine SSH-Verbindung zu einem Remote-Server litt. Ich würde jedoch 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 scheiterte. Es ist gut, weil es ein GDB-Interface-Fenster hat, so dass Sie sehen können, was los ist und auch direkt mit GDB interagieren können. DDD kann in einer Remote-X-Sitzung in meiner Umgebung nicht verwendet werden (ein echtes Problem, da ich bei Unix aus irgendeinem Grund auf einem Thin Client sitze).

KDevelop folgte dem typischen KDE-Stil und stellte ALLES dem Benutzer zur Verfügung. Ich hatte auch nie Glück beim Debuggen von Nicht-KDevelop-Programmen in KDevelop.

Das Gnat Programming Studio (GPS) ist eigentlich ein ziemlich gutes Frontend für GDB. Es verwaltet nicht nur Ada-Projekte, es lohnt sich also, es 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 und aus dem Weg geht. Eclipse scheint auch viel Platz in Anspruch zu nehmen und wie ein Hund zu rennen.

29
Adam Hawes

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

  • Erstellen Sie ein neues Projekt, "Import eines Makefile-basierten Projekts".
  • Zeigen Sie auf Ihren Stammprojektordner (es indiziert die Quellen darunter und es ist beeindruckend schnell).
  • Gehen Sie zu den Projekteinstellungen und fügen Sie eine Ausführungskonfiguration hinzu. Geben Sie dann die ausführbare Datei, die Sie debuggen möchten, und ihre Argumente an.
  • Qt Creator scheint darauf zu bestehen, Ihr Projekt zu erstellen, bevor Sie es debuggen. Wenn Sie das nicht möchten oder make nicht verwenden, können Sie den Befehl make überschreiben. Ich habe es in "true" geändert. :)

Das scheint ein bisschen viel Arbeit für das Debuggen einer App zu 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 weniger als eine Stunde lang benutzt habe, aber ich bin bisher beeindruckt.

28
Soulman

Ich benutze GDB, einfach und nützlich

26
cod

Ich benutze DDD sehr oft und es ist ziemlich mächtig, wenn man erst einmal gelernt hat, es zu benutzen. Eine Sache, die ich sagen würde, ist, es nicht über X über WAN zu verwenden, weil es eine Menge unnötiger Bildschirmaktualisierungen zu tun scheint.

Außerdem würde ich TotalView ausprobieren, wenn Sie nicht mit GDB verlobt sind und es Ihnen nichts ausmacht, ein wenig Geld aufzubringen. Es hat eine 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 (und Ihnen so das Anzeigen von zu ermöglichen) AWL-Liste als tatsächliche Liste von Objekten und nicht als verwirrende interne Datenelemente usw.)

16
Nick Bastin

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 relativ funktionsreiche Debugging-Perspektive enthält (die hinter den Kulissen GDB verwendet). Es ist auf einer Vielzahl von Plattformen verfügbar.

8
user14636

Ähnlich komfortabel wie das Eclipse-GDB-Frontend ist das Emacs-Frontend, das eng mit der Emacs-IDE verknüpft ist. Wenn Sie bereits mit Emacs arbeiten, werden Sie es mögen:

GDB Emacs Frontend

Ich habe KDbg verwendet (funktioniert nur unter KDE).

6
codeguru

Qt Creator-on-Linux ist heutzutage mit Visual Studio-on-Windows für C++ auf Augenhöhe. Ich würde sogar besser auf der Debuggerseite sagen.

5
Marv

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

5
Florent

DDD ist das GNU Frontend für gdb: http://www.gnu.org/software/ddd/

5
mmattax

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

gdb erledigt die meisten Dinge, die Sie auf Ihrer Wunschliste haben. DDD gibt ihnen eine schönere Front. Beispielsweise wird das Thread-Umschalten vereinfacht. Das Festlegen von Haltepunkten ist so einfach wie erwartet.

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

Die einzige Funktion von DDD, die sich von allen anderen von mir verwendeten Debuggern abhebt, ist die "grafische Darstellung" der 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 zum übergeordneten Element geöffnet.

5

Haben Sie sich jemals DS-5-Debugger angesehen?

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

Ich habe positive Erfahrungen mit diesem Tool beim Debuggen von Android Anwendungen auf realen Geräten mit Eclipse.

3
Viktor Malyi

Als jemand, der mit Visual Studio vertraut ist, habe ich mir mehrere Open-Source-IDEs angeschaut, um sie zu ersetzen. KDevelop kommt dem am nächsten, was eine Visual C++ - Person tun kann, um mit der Verwendung zu beginnen. Wenn Sie das Projekt im Debugging-Modus ausführen, verwendet es gdb, aber kdevelop erledigt das Ganze so ziemlich, dass Sie nicht wissen müssen, dass es gdb ist. Sie können nur einzelne Schritte ausführen oder Variablen Überwachungen zuweisen.

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

3
Dennis Ferron

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

Auf UNIX-Systemen ist KDevelop gut, aber ich verwende KDbg , weil es einfach zu bedienen 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 mit dem Namen Wascana Desktop Developer . Es besteht aus Eclipse CDT und MinGW, die alle gut verpackt und für ein Minimum an Schmerzen vorkonfiguriert sind. Es ist das Beste, was ich für die Entwicklung von GNU - Code unter Windows gefunden habe.

Ich habe alle diese Debugger verwendet und keiner von ihnen ist so gut wie MS Dev Studio. Eclipse/Wascana ist wahrscheinlich am nächsten dran, hat jedoch einige Einschränkungen, z. B., dass Sie nicht in DLLs eindringen können, und eignet sich nicht so gut zum Untersuchen von Variablen.

3
Adam Pierce

Was durchgestuft werden kann, wird durch die Debugging-Informationen, die g ++ in hohem Maße erzeugt, begrenzt. 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.

3
Allen

Der Code: Blocks C++ IDE) hat einen grafischen Wrapper mit einigen der Funktionen, die Sie möchten, aber nichts wie die Leistung von VS.

2
crobar

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

2
Sergey Zhukov

Haben Sie versucht, GDB-W mit Cygwin GDB. Es wird vorausgesetzt, dass eine Windows-Oberfläche vorhanden ist, die ziemlich gut funktioniert.

Das einzige Problem, das ich festgestellt 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 installierte.

1
BubbaT

KDevelop funktioniert ziemlich gut.

1
Harold Ekstrom

Wenn Sie unter Visual Studio nach gdb suchen, aktivieren Sie WinGDB .

0
Dominic.wig

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

0
Milan Babuškov

In den letzten 15 Monaten nutze ich Insight (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/Dienstprogramm, aber etwas schwieriger zu bedienen (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 mag es, wenn IDE während des Debuggens unverändert bleibt; unter Windows verwende ich SlickEdit für IDE und Visual Studio Debugger zum Debuggen , DDD und SlickEdit, Insight ist meine erste Wahl, ich benutze es> 95% der Zeit, gdb und DDD machen die anderen 5% aus. Wenn ich die Chance bekomme, werde ich irgendwann Eclipse meiner Arbeit auswerten PC scheint nicht genug zu haben RAM (nur 1GB) um Eclipse einigermaßen gut laufen zu lassen.

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 gut genug für unsere Bedürfnisse war. und es ist frei und allgegenwärtig.

0
Radim Cernej

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

Ich habe mich mit NetBeans sehr wohl gefühlt.

  • [debug] aus dem Menü -> Deugger anhängen ...
  • als Prozess wurde der zu debuggende ausgewählt
  • als Projekt [neues Projekt]

Jetzt verschwindet das Fenster und Sie sehen nichts. Trennen Sie sich vom Prozess. Das Lesequadrat "Stop" hilft.

  • importquelle aus dem Projekt, z. Mappe. ".../MyProject/src
  • Jetzt wird es in Ihrem Projekt angezeigt und Sie können Haltepunkte festlegen.
  • wieder ttach 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 komfortabler.

0
Cutton Eye

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

0
siddhusingh