Einrichten von GDB Pretty Printing in Ubuntu 13.10

8

Ich habe versucht, GDB Pretty Printing (für eine einfachere Arbeit mit Standardcontainern) gemäß dieser Antwort einzurichten . Anstatt Python Pretty Printers Code von SVN zu verwenden, habe ich diejenigen verwendet, die mit Ubuntu geliefert werden . Nachdem ich den Rest des Prozesses durchlaufen hatte, wurde beim Starten von gdb die folgende Fehlermeldung angezeigt:

For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Traceback (most recent call last):
  File "<string>", line 3, in <module>
  File "/home/nietaki/gdb_printers/python/libstdcxx/v6/printers.py", line 54
    raise ValueError, "Cannot find type %s::%s" % (str(orig), name)
                    ^
SyntaxError: invalid syntax
/home/nietaki/.gdbinit:6: Error in sourced command file:
Error while executing Python code.

Nachdem ich mich etwas eingehender mit dem Problem befasst hatte, fand ich heraus, dass die Grundursache tiefer liegt - Python 3, das in gdb verwendet wird, ist nicht mit libstdc ++ - hübschen Druckern kompatibel .

Hat jemand eine funktionale Problemumgehung dafür? Im Moment bin ich mit den (auch nützlichen, aber nicht als funktionalen) Helfern von Dan Marinescu festgefahren: http://www.yolinux.com/TUTORIALS/GDB-Commands.html#STLDEREF

Nietaki
quelle
Ich habe zwei Fragen: Erstens ist Ask Ubuntu der richtige Ort und warum? Zweitens, ist das nicht ein Fehler der Anwendung? In beiden Fällen ist es nicht zum Thema!
Lucio
Wie ist das nicht zum Thema? Ich habe einen bestätigten, wichtigen Fehler vom Ubuntu- Launchpad verlinkt , der mein Problem verursacht, und nach einer Problemumgehung gefragt. Wenn jemand, der 13.10 verwendet, dies zum Laufen bringt, könnte ich sicherlich seine Lösung verwenden. Ich habe mit einem Freund gesprochen, der auf Gentoo ist, und dieses Problem betrifft sie nicht.
Nietaki
2
Es gibt einen nicht festgeschriebenen
Jonathan Wakely

Antworten:

8

Die einfachste Lösung scheint darin zu bestehen, die hübschen Drucker wie printers.pygewohnt einzurichten und dann mit 2to3 in Python3 zu konvertieren:

2to3 printers.py -w

Ich habe es nur kurz getestet, aber es scheint gut zu funktionieren.

dshepherd
quelle