Steuerung der Eclipse CDT Debugger-Ausgabe?

8

Wenn CDT verwendet wird, möchte ich std :: string im Debug-Fenster 'Variable' mit der enthaltenen Zeichenfolge anzeigen lassen. Wenn es zum Beispiel das Wort "history" enthält, möchte ich history im Debugger-Fenster mit der Bezeichnung "variables" sehen.

Ich denke, es gibt einen allgemeinen Weg, um einen Drilldown in Objekte durchführen zu lassen, aber ich kann meinen Finger nicht darauf legen. Weiß jemand da draußen, wie man das macht?

Dies wäre auch nützlich, wenn ich nur ein einzelnes Feld aus einem komplexen Objekt ausgeben möchte.

Danke, Rechnung

    
billcoke 17.11.2008, 15:20
quelle

6 Antworten

1

Beachten Sie, dass Sie nicht eine allgemeine Methode zum Drilldown in Objekte wünschen; Sie möchten STL-Container hübsch drucken.

Ich denke CDT delegiert dies an das Debugger-Backend; d. h. es liegt an Ihrem Debugger (gdb, vielleicht?), CDT über den Wert einer Variablen zu informieren und wie sie erweitert werden kann.

Edit: Ich glaube nicht, dass das mit CDT ausgelieferte GDB-Backend eine "intelligente" Anzeige von STL-Containern unterstützt. Wenn Sie wirklich daran interessiert sind, schlage ich vor, dass Sie das CDT-Entwicklerteam unter [email protected] kontaktieren.

Aktualisieren / Bearbeiten: Bitte lesen Sie die anderen Antworten unten, um Anweisungen zum Aktivieren hübscher Drucker in CDT zu erhalten.

    
JesperE 17.11.2008, 15:44
quelle
22

Auch die Anzeige von stl-Containern mit eclipse / gdb war für mich schon lange ein großer Schmerz.

Aber jetzt habe ich gerade entdeckt, dass die neueste Version von gdb mit aktiviertem Python dabei helfen kann.

Es folgt, was ich getan habe (Ubuntu Linux 8.10):

  • Installieren Sie gdb version & gt; = 6.8.50 (zum Beispiel von debian experimental )
  • Erstellen Sie eine Datei namens .gdbinit in Ihrem Projektstamm mit dem folgenden Inhalt:

    python-Import gdb.libstdcxx.v6.printers

Nun werden die STL-Container hübsch gedruckt .

Wenn Sie überprüfen möchten, ob Sie bereits eine Python-fähige gdb haben (oder ob Ihre neue Installation funktioniert hat):

  • Starten Sie gdb über die Konsole
  • Führe in der gdb-Eingabeaufforderung Folgendes aus:

    (gdb) python print 'Python aktiviert GDB funktioniert!'

  • Wenn der obige Befehl das erzeugt, was wir erwarten, funktioniert es.

Weitere Details finden Sie in diesem Blog .

    
rpseng 26.01.2009 16:15
quelle
1

Windows 7

Holen Sie sich die hübschen Drucker: svn co svn://gcc.gnu.org/svn/gcc/trunk/libstdc++-v3/python

Einrichten der Sonnenfinsternis mit: C / C ++ Debug Gdb:

%Vor%     
Chris Seddon 18.09.2011 19:40
quelle
1

Ich möchte die Windows 7-Antwort erweitern, da einige wichtige Schritte weggelassen wurden:

Dies ist für MinGW-Benutzer mit Eclipse CDT

0) Wenn Sie keine Python-GDB haben, öffnen Sie eine Shell / einen Befehl und verwenden Sie MinGW-get.exe, um 'installieren'    Python-aktivierte GDB z.B.

%Vor%

1a) Laden Sie Python 2.7.x von Ссылка herunter und installieren Sie

1b) Stellen Sie sicher, dass PYTHONPATH und PYTHONHOME in Ihrer Umgebung festgelegt sind:

%Vor%

1c) Füge PYTHONHOME zu deinem PFAD hinzu

%Vor%

2a) Öffnen Sie eine Texteingabe, geben Sie die folgenden Anweisungen ein. Beachten Sie, dass die 3. Zeile ist     Zeigt auf wo sich die Python-Skripte befinden. Siehe die folgenden Hinweise dazu!

%Vor%

2b) Speichern Sie als '.gdbinit' HINWEIS: Windows Explorer lässt Sie keine Datei benennen, die mit beginnt     mit einer Periode vom Entdecker. Die meisten Textänderungen (einschließlich Notepad) lassen Sie. GDB-Init     Dateien sind wie 'Skripte' von GDB-Befehlen, die GBD beim Laden ausführt.

2c) Die '.gdbinit'-Datei muss sich im Arbeitsverzeichnis von GDB befinden (wahrscheinlich ist dies der Fall)     Ihr Projekt-Stammverzeichnis, aber Ihre IDE kann es Ihnen sagen.

3) Öffnen Sie Ihren Eclipse (oder andere IDE) Einstellungen Dialog. Wechseln Sie zum C ++ Debugger-Untermenü.

4) Konfigurieren Sie Eclipse, um C:\MinGW\bin\gdb-python27.exe als Debugger und .gdbinit als Konfigurationsdatei zu verwenden.

5a) Erstellen Sie alle Ihre Debug-Startkonfigurationen neu (löschen Sie die alte und erstellen Sie eine neue von Grund auf).

%Vor%

5b) Bearbeiten Sie jede Debug-Konfiguration und zeigen Sie sie auf die neue gdb-python.exe und zeigen Sie sie auf die.

Wenn Probleme auftreten:

- Vergessen Sie nicht, den Speicherort im obigen Python-Code in das Python-Verzeichnis zu ändern!    Dieses Verzeichnis wird von MinGW erstellt, also gehen Sie nicht zum Herunterladen der hübschen Drucker MinGW    habe es für dich in Schritt Null getan. Gehe einfach zu deinem MinGW-Installationsdirektor, dem Share-Ordner,    Der GCC-Ordner (hat die Versionsnummer) und Sie finden den Python-Ordner. Dieser Ort ist was    sollte in Python-Skript von GDB geladen werden.

- Auch die .gdbinit ist eine PITA, stellen Sie sicher, dass sie richtig benannt ist und im Arbeitsordner von GDB    Das ist nicht unbedingt, wo gdb-python.exe befindet! Sehen Sie sich Ihre GDB-Ausgabe an, wenn Sie GDB laden, um zu sehen, ob a) 'python-enabled' während des Ladens erscheint und die Anweisungen in der .gdbinit erscheinen.

- Schließlich hatte ich eine Menge Probleme mit den Systemvariablen. Wenn Python Ihnen 'ImportError' gibt, dann haben Sie wahrscheinlich PYTHONPATH oder PYTHONHOME nicht gesetzt.

- Das Verzeichnis mit 'gdb-python27' (z. B. C: \ MinGW \ bin ') sollte ebenfalls auf Ihrem Pfad liegen. Wenn dies der Fall ist, können Sie Eclipse etwas aufbessern, weil Sie es nicht einfügen müssen in absoluten Pfaden. Aber manchmal braucht die .gbdinit einen absoluten Pfad. Wenn es funktioniert, sehen Sie die Ausgabe von gbd (console- & gt; gdb traces) so beim Start des Debuggers:

%Vor%     
William Symionow 10.01.2013 19:13
quelle
0

Der einzige Weg, den ich gefunden habe, ist die Verwendung der GDB-Befehlszeile:

  1. Klicken Sie im Fenster Debug auf gdb . Es befindet sich direkt unter der Stapelspur.
  2. Verwenden Sie im Fenster Konsole den Befehl GDB up , um zu dem gewünschten Stapelrahmen zu gelangen
  3. Verwenden Sie im Fenster Konsole erneut den Befehl print , um den Befehl anzuzeigen std::string Variable:

    p mystring

Aber das ist eine Menge Ärger.

Etwas, das ich bemerkt habe, ist, dass wenn ich über die Variable schwinge, die Felder von std :: string tatsächlich angezeigt werden, aber es ist abgeschnitten, so dass ich nicht den interessantesten Teil sehe: den string-Wert. Vielleicht gibt es eine Möglichkeit, die maximale Länge des angezeigten Wertes zu erhöhen.

    
John McGehee 14.01.2009 20:01
quelle
0

billcoke Ihr bestes Beispiel ist die Verwendung einiger gdb-Makros, die Sie in der gdb-Konsole eingeben können, die im Console / Debugger-Fenster in eclipse geöffnet werden kann. Sie können sie hier finden: Ссылка

es wird nicht automatisch auf Hover, aber Sie müssen tippen, die ermüdend ist .... aber sogar im Jahr 2009 die Eclipse CDT ist nicht gelungen, uns einige nette Debugging-Funktionen zu bringen, so ist dies Ihre beste Aufnahme.

NACH RPSENG: Danke für den Tipp rpseng! es funktioniert gut! Leider scheint meine Sonnenfinsternis (Ganymede) so verwirrt zu sein, dass sie nicht mehr den Typ von Zeigern auf Instanzen meiner eigenen Klassen und deren Vererbung entdecken wird, so dass das Durchlaufen von Membervariablen dieser Zeiger nicht mehr möglich ist. Arbeiten Sie mit CDT 6.0 und funktioniert es dort besser?

    
schmendrick 23.02.2009 15:51
quelle

Tags und Links