Я отладил коды C++ с помощью gdb в Ubuntu 14.04. Когда я передаю stl контейнер команде печати, это раньше печатало содержание контейнера. Но затем я обновил до Ubuntu 16.04 LTS неделя назад. Теперь те симпатичные принтеры не работают. Когда я печатаю их, я получаю тех, которые необработанный контейнер произвел Вас, добираются, когда Вам не установили принтеры Python.
Я имею libstdcxx/v6/python.py
в моей системе. Я также имею libstdc++.so.6.0.21-gdb.py
в папке автозагрузки. Когда я печатаю информационный симпатичный принтер в gdb, я получаю список stl принтеров, таким образом, я знаю, что они регистрируются. Однако мой gdb
не печатает std::list
переменная. Я включил симпатичный принтер, установил печать, симпатичную на.
Мой gcc
версия 5.4 и gdb
версия 7.11.1. Оба были установлены наряду с Ubuntu 16.04. Я не создал их вручную. Так что-либо очевидное я отсутствую?
Кажется этим с более новым libstdcxx, контейнеры (некоторые из них?) перемещены в станд.:: __ 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):