Gdb довольно принтер не работает в Ubuntu 16.04
Я отлаживал коды C++ с использованием gdb в Ubuntu 14.04. Когда я передаю контейнер stl команде print, он используется для печати содержимого контейнера. Но затем я обновился до Ubuntu 16.04 LTS неделю назад. Теперь эти красивые принтеры не работают. Когда я их печатаю, я получаю исходный контейнер, который вы получаете, когда у вас не установлены принтеры Python.
я имею libstdcxx/v6/python.py
в моей системе. у меня тоже есть libstdc++.so.6.0.21-gdb.py
в папке автозагрузки. Когда я печатаю информацию pretty-printer в gdb, я получаю список принтеров stl, поэтому я знаю, что они зарегистрированы. Тем не менее, мой gdb
не печатает std::list
переменная. Я включил симпатичный принтер, включил режим печати.
мой gcc
версия 5.4 и gdb
версия 7.11.1. Оба были установлены вместе с Ubuntu 16.04. Я не построил их вручную. Так что-нибудь очевидное, что мне не хватает?
1 ответ
Кажется, что в более новой libstdcxx контейнеры (некоторые из них?) Перемещаются в пространство имен std::__cxx11::, и существующее сопоставление с образцом существующего симпатичного принтера больше не совпадает. Следующий патч добавляет этот паттерн и исправляет его для меня.
*** /usr/share/gcc-5/python/libstdcxx/v6/printers.py.orig 2016-08-08 16:49:58.000000000 +0000
--- /usr/share/gcc-5/python/libstdcxx/v6/printers.py 2016-11-08 23:25:23.620557354 +0000
***************
*** 1081,1086 ****
--- 1081,1087 ----
def add_container(self, base, name, function):
self.add_version(base, name, function)
self.add_version(base + '__cxx1998::', name, function)
+ self.add_version(base + '__cxx11::', name, function)
@staticmethod
def get_basic_type(type):