Wie können STL-Containerdaten in gdb deponiert werden?

8

Ich bin nicht in der Lage, STL-ungeordnete Kartencontainer-Werte in gdb abzulegen. Variablentyp ist std :: unordered_map & lt; & gt; var;

meine gdb-Version - 7.7.1 Gdb-Konfiguration:

%Vor%

g ++ (Ubuntu 4.8.4-2ubuntu1 ~ 14.04.3) 4.8.4

Was ist der richtige Weg, um STL-Container-Werte n gdb zu drucken?

gdb Ausgabe des Kartencontainers:

p var

%Vor%     
user1762571 05.05.2017, 14:46
quelle

5 Antworten

4

Ihre gdb --configuration -Ausgabe fehlt --with-python -Klausel, also nehme ich an, dass Ihre gdb Python-Erweiterungen wirklich nicht verwenden kann. Nach dieser SO Antwort gdb hübschen Druck funktioniert nicht scheint es notwendig zu sein damit Pretty-Print funktioniert.

Mein Ubuntu 14.04 in Docker kommt mit Pretty-Print-Funktion und gdb wird mit --with-python konfiguriert. Es scheint, Ihre gdb-Installation ist irgendwie angepasst. Sie können die gdb entweder aus Quellen mit korrekten Optionen neu kompilieren oder versuchen, gdb von Ihren Distributionspaketen zu entfernen.

    
pe3k 09.05.2017, 10:09
quelle
2

Probieren Sie es aus: Ссылка

Und diese Zeilen zu Ihrem hinzufügen: ~/.gdbinit

%Vor%

Wenn es nicht funktioniert, können Sie eine ältere Version von SVN näher an die von Ihnen verwendete GDB-Version auschecken.

Hinweis: Angenommen, in Ihrer GDB ist das Python-Back-End aktiviert.

Update: Falls Sie das gdb-Paket von Ubuntu-Paketen verwenden, können Sie versuchen, folgendes Paket zu installieren, um Unterstützung für "STL pretty-printing" hinzuzufügen: co_de%.
Mit diesem Update sollte GDB automatisch das Drucken für den STL-Container unterstützen.

    
AmeyaVS 12.05.2017 11:46
quelle
2

1) Python wird von älteren Versionen von gdb nicht benötigt, um STL-Objekte zu drucken. Der Fehler mit Python hat etwas mit Ihren Konfigurationen zu tun.

gdbinit ist keine gdb-Konfiguration

2) Es gibt eine Lösung, die trotzdem funktioniert: alte deinstallieren und neu installieren (suche nach hübschen Print-Paketen auf deiner Distribution) gdb dbg packages überprüfe auch die .bashrc deines Users (du kannst dort etwas mit gdb machen, was du nicht tust 't wollen), löschen Sie es, starten Sie das Terminal neu und es wird funktionieren.

Beachten Sie, dass es neuere Versionen von gdb gibt, die Python nur einer bestimmten Version und Flavor benötigen und sie haben einige Bugs und einige Linux-Distributionen enthalten sie als Standard und es ist ihr Problem, gdb ist kein eine Sache - es ist ein Baum der Dinge. Stellen Sie sicher, dass Sie das richtige bekommen, meiner Meinung nach sollte es nichts mit Python zu tun haben.

Hier ist der Link, der beschreibt, wann diese schlechte Idee in gdb eingeführt wurde und warum die Leute es zu mögen schienen Ссылка

    
iantonuk 14.05.2017 05:33
quelle
0

Meine Vermutung ist, dass Sie in Ihrem System zwei binäre Programme installiert haben:

  • derjenige, der mit Ubuntu 14.04
  • geliefert wird
  • die, die Sie selbst gebaut haben

Der von Ihnen selbst erstellte Drucker unterstützt keine Python-Pretty-Drucker, da er nicht mit --with-python -Option konfiguriert wurde, entsprechend gdb --configure output. Diese gdb-Binärdatei wird aufgerufen, wenn Sie in der Eingabeaufforderung gdb eingeben.

Aber es sollte eine andere Binärdatei von Ubuntu dpkg Paket installiert werden. Es sollte in /usr/bin/gdb liegen und sollte schönes Drucken unterstützen. Versuche es mit dem vollständigen Pfad aufzurufen:

%Vor%     
ks1322 15.05.2017 11:42
quelle
0
%Vor%     
Rakesh kumar 18.01.2018 05:42
quelle

Tags und Links