2015-06-25 14 views
18

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?

+1

Ubuntu 14.04 erstellt gdb mit Python 3, so dass 'print' nun eine Funktion ist; benutze '(gdb) python print (sys.path)' –

+1

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

+11

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. –

Antwort

12

Ich poste dies als eine Antwort, so dass es für andere einfacher sein wird, es zu finden. Die Kommentare von Mark Plotnick und webbertiger sind die eigentliche Antwort.

Um es zusammenzufassen, hier ist das, was für mich gearbeitet:

  • Erstellt Ich bin mit Eclipse CDT eine ~/.gdbinit Datei
  • hinzugefügt python sys.path.append("/usr/share/gcc-4.8/python"); zu dieser Datei

so hab ich gecheckt dass diese Datei in Fenster> Einstellungen> GDB> GDB-Befehlsdatei verwendet wird.

Verwandte Themen