Я попытался настроить красивую печать GDB (для облегчения работы со стандартными контейнерами) в соответствии с этим ответом . Вместо того, чтобы использовать код для симпатичных принтеров Python из SVN, я использовал те, которые поставляются с Ubuntu . После прохождения остальной части процесса я запустил следующее сообщение об ошибке при запуске GDB:
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.
Посмотрев немного глубже в проблему, я обнаружил, что коренная причина лежит глубже - Python 3, используемый в gdb, несовместим с симпатичными принтерами libstdc ++ .
У кого-нибудь есть функциональный обходной путь для этого? На данный момент я застрял с (также полезными, но не такими функциональными) помощниками от Дана Маринеску: http://www.yolinux.com/TUTORIALS/GDB-Commands.html#STLDEREF
Ответы:
Кажется, проще всего настроить обычные принтеры как обычно, а затем преобразовать их
printers.py
в python3, используя 2to3:Я только кратко проверил, но, кажется, работает нормально.
источник