Ich bekomme diese Fehlermeldung, wenn ein Programm in gdb starten:Ubuntu 14.04, gcc 4.8.4: GDB ziemlich Druck nicht funktioniert, weil der Python Ausgabe
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Traceback (most recent call last):
File "/usr/share/gdb/auto-load/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.19-gdb.py", line 63, in <module>
from libstdcxx.v6.printers import register_libstdcxx_printers
ImportError: No module named 'libstdcxx'
Google diesen Bug-Report erschienen: http://osdir.com/ml/debian-gcc/2014-02/msg00061.html Diese Fehlerberichtliste verwendet den Befehl python print sys.path
in der gdb-Eingabeaufforderung. Allerdings, wenn ich versuche, eine Python auf der GDB Eingabeaufforderung zu verwenden, dies geschieht:
(gdb) python print sys.path
File "<string>", line 1
print sys.path
^
SyntaxError: invalid syntax
Error while executing Python code.
(gdb) python print "Hello"
File "<string>", line 1
print "HellO"
^
SyntaxError: invalid syntax
Error while executing Python code.
Ich bin mit Ubuntu 14.04 LTS, relevanten Versionsinformationen:
$ gcc --version
gcc (Ubuntu 4.8.4-2ubuntu1~14.04) 4.8.4
$ gdb --version
GNU gdb (Ubuntu 7.7.1-0ubuntu5~14.04.2) 7.7.1
$ python --version
Python 2.7.6
klar, etwas in meinem Setup ist gebrochen. Ist es Python, Gdb oder etwas anderes?
Ubuntu 14.04 erstellt gdb mit Python 3, so dass 'print' nun eine Funktion ist; benutze '(gdb) python print (sys.path)' –
Danke, das beantwortet diese Frage. Der ursprüngliche Fehler "ImportError: Kein Modul mit dem Namen 'libstdcxx'" bleibt jedoch erhalten. Bedeutet das, dass dieses Skript in Python 3 konvertiert werden muss? – Philipp
Das Skript in 'libstdC++. So.6.0.19-gdb.py' sollte entsprechend dieser E-Mail-Nachricht korrigiert und möglicherweise nach Python 3 portiert werden (ich habe es noch nicht genau angeschaut). Aber wenn Ihr Ziel mit der Systemversion von gcc kompiliert wird (dh Sie kompilieren nicht, oder verwenden Sie eine andere Version von gcc als die, die mit dem System geliefert wurde), können Sie einfach '(gdb) python sys.path verwenden .append ("/ usr/share/gcc-4.8/python") '; dann spielt es keine Rolle, dass das Script 'libstdC++. so.6.0.19-gdb.py' dem Pfad ein nicht existierendes Verzeichnis hinzufügt. –