Ich versuche pretty printing für STL in meiner GDB auf Ubuntu 14.04 hinzuzufügen. Einige Details zu den Werkzeugen:GDB pretty printing ImportError: Kein Modul namens 'printers'
OS: Ubuntu 14.04
GDB Version: 7.7
Python-Version: 2.7.6
python3 Version: 3.4.0
Aber nachdem ich Setup genau wie die Anweisung gesagt hat. Ich bekomme immer noch folgende Fehler:
Traceback (most recent call last):
File "<string>", line 3, in <module>
File "/home/jerry/myLib/gdb_stl_support/python/libstdcxx/v6/__init__.py", line 19, in <module>
from printers import register_libstdcxx_printers
ImportError: No module named 'printers'
/home/jerry/.gdbinit:6: Error in sourced command file:
Error while executing Python code.
Reading symbols from main...done.
Dann habe ich mein hübsches Druckinstallationsverzeichnis überprüft. Unter dem Verzeichnis /home/jerry/myLib/gdb_stl_support/python/libstdcxx/v6/
kann ich deutlich sehen, dass ich die Datei printers.py habe. Und ich sehe auch den Inhalt von printers.py, ich bin sicher, dass es auch die register_libstdcxx_printers
Klasse hat. Warum beschwert sich der Python-Interpreter immer noch das printers
Modul fehlt? Das erscheint mir wirklich seltsam.
Nein, es gibt keine "Suche" nach Moduldateien. Wenn ein Verzeichnis in sys.path andere Verzeichnisse enthält, müssen diese * Pakete * sein, damit Sie Module von innen importieren können. Dann müssen Sie den Paketnamen in der import-Anweisung angeben. Z.B. "import gdb" funktioniert, und "import gdb.printing" funktioniert, aber * nicht * "import printing". – deets
@deets Vielen Dank für die Erwähnung der _ [packages] (https://docs.python.org/2/tutorial/modules.html#packages) _ Konzepte in Python. Ich weiß nicht, dass Python solche Submodule organisiert. – Dreamer
Zusätzlich musste ich '' python/libstdcxx/v6/__ init __. Py'' editieren und ersetzen '' von Drucker importieren register_libstdcxx_printers'' mit '' .printers import register_libstdcxx_printers'' (Meine GDB enthält Python 3.4) –