sto ottenendo questo errore quando si avvia un programma in gdb:Ubuntu 14.04, gcc 4.8.4: gdb abbastanza la stampa non funziona a causa del problema di Python
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 alzato questo bug report: http://osdir.com/ml/debian-gcc/2014-02/msg00061.html Questo elenco di segnalazioni di bug utilizza il comando python print sys.path
nel prompt di gdb. Tuttavia, quando cerco di usare qualsiasi python al prompt di gdb, questo accade:
(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.
sto usando Ubuntu 14.04 LTS, pertinenti informazioni sulla versione:
$ 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
Chiaramente, qualcosa nella mia configurazione è rotto. Python, gdb o qualcos'altro?
Ubuntu 14.04 crea gdb con python 3, quindi 'print' è ora una funzione; usa '(gdb) python print (sys.path)' –
Grazie, questo risponde a questa domanda. Tuttavia, rimane l'errore originale "ImportError: nessun modulo chiamato 'libstdcxx'". Questo significa che questo script deve essere convertito in python 3? – Philipp
Lo script in 'libstdC++. So.6.0.19-gdb.py' dovrebbe essere risolto come da quel messaggio di posta elettronica, ed eventualmente portato su python 3 (non l'ho ancora guardato molto da vicino). Ma se il tuo target è compilato con la versione di sistema di gcc (cioè non stai cross-compilando né usi una versione di gcc diversa da quella fornita con il sistema), puoi semplicemente fare '(gdb) python sys.path .Append ("/ usr/share/gcc-4.8/python") '; quindi non importa che lo script 'libstdC++. so.6.0.19-gdb.py' aggiunga una directory inesistente al percorso. –