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.
Antworten:
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.
quelle
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:
quelle
gdb -tui funktioniert in Ordnung, wenn Sie etwas GUI-artiges, aber dennoch zeichenbasiertes möchten.
quelle
Schauen Sie sich den Nemiver C / C ++ Debugger an . Die Installation in Ubuntu (Developer Tools / Debugging) ist einfach.
Update: Neuer Link.
quelle
Qt Creator scheint gutes Zeug zu sein. Ein Kollege hat mir einen Weg gezeigt, wie ich es für das Debuggen einrichten kann:
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.
quelle
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.
quelle
Ich benutze cgdb, einfach und nützlich
quelle
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.)
quelle
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.
quelle
Ä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
quelle
DDD ist das GNU-Frontend für gdb: http://www.gnu.org/software/ddd/
quelle
Ich habe KDbg verwendet (funktioniert nur unter KDE).
quelle
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.
quelle
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.
quelle
In dieser Liste fehlt eine IDE, die sehr effizient ist (ich habe sie in vielen C / C ++ - Projekten ohne Probleme verwendet): Netbeans .
quelle
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.
quelle
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
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.
quelle
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.
quelle
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.
quelle
VisualGDB ist ein weiteres Visual Studio-Plugin zum Entwickeln und Debuggen von Anwendungen unter Linux und eingebetteten Plattformen.
quelle
KDevelop funktioniert ziemlich gut.
quelle
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.
quelle
Die neueste Version von Geany unterstützt dies (allerdings nur unter Linux).
quelle
Wenn Sie unter Visual Studio nach gdb suchen, überprüfen Sie WinGDB .
quelle
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.
quelle
Verwenden Sie www.zero-bugs.com/ Zero Debugger, es erfordert C ++ 0x-Unterstützung von gcc
quelle
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.
Jetzt verschwindet das Fenster und Sie sehen nichts. vom Prozess trennen. Das Read Square "Stop" hilft.
Gehen Sie zu [Fenster] -> [Debuggen] -> Wird Ihr Fenster komfortabel.
quelle