Как включить gdb довольно печатать для объектов STL STL в Eclipse CDT?

Я пытаюсь добавить красивую печать для объектов STL в eclipse cdt. Я попытался выполнить описанные здесь шаги:

http://sourceware.org/gdb/wiki/STLSupport

Я проверил папку python, но я не могу это сделать …

Я создал gdbinit и был выбран для моей конфигурации отладки, но всякий раз, когда я пытаюсь начать отладку, я получаю следующую ошибку:

Error while executing Python code. !STACK 0 java.lang.Exception: /home/lizardking/workspace/eu.sofia.kpi.cpp.x86.testapp/.gdbinit:6: Error in sourced command file: Error while executing Python code. at org.eclipse.cdt.dsf.mi.service.command.AbstractMIControl$RxThread.processMIOutput(AbstractMIControl.java:824) at org.eclipse.cdt.dsf.mi.service.command.AbstractMIControl$RxThread.run(AbstractMIControl.java:662) 

Если я попытаюсь выполнить содержимое gdbinit в оболочке python, я получаю эту ошибку:

 Python 2.6.6 (r266:84292, Sep 15 2010, 15:52:39) [GCC 4.4.5] on linux2 Type "help", "copyright", "credits" or "license" for more information. import sys sys.path.insert(0, '/home/Documents/python') from libstdcxx.v6.printers import register_libstdcxx_printers Traceback (most recent call last): File "", line 1, in  ImportError: No module named libstdcxx.v6.printers 

Кажется, у меня нет такого модуля … У меня нет понятия о Python, поэтому я даже не знаю, что такое «модуль» в Python ….

Может ли кто-нибудь помочь мне с этим? Для меня очень важно иметь возможность видеть реальную отладочную информацию или использовать ее так. Или каким-то образом я могу отлаживать даже с консоли и получать хороший вывод из gdb, потому что, если я буду печатать строку, например, я получаю бесполезный вывод ….

С уважением, Алекс

Это решение, которое работает для меня.

Загрузите ( http://www.gnu.org/software/gdb/download/ ) и установите последнюю версию gdb (т.е. с –prefix $ HOME). Он поддерживает скрипты python.

Получите красивые принтеры python, выполнив

svn co svn: //gcc.gnu.org/svn/gcc/trunk/libstdc++-v3/python

в каталоге по вашему выбору (например, $ (HOME) / distribs / gdb_printers). Вы получите подкаталог python в каталоге checkout.

Поместите это в свой файл $ (HOME) /. Gdbinit с правильным путем к симпатичным принтерам:

 python import sys sys.path.insert(0, '/home/YOUR_NAME_HERE/distribs/gdb_printers/python') from libstdcxx.v6.printers import register_libstdcxx_printers register_libstdcxx_printers (None) end 

Это делает довольно печатную работу, используя интерфейс командной строки gdb ( >(gdb) p my_std_string ).

Далее объясняется использование при отладке в Eclipse.

Загрузите ( http://download.eclipse.org/eclipse/downloads/ ) последнюю версию Stream Stable Build или Release Eclipse (> = 3,7 версии).

Загрузите ( http://download.eclipse.org/tools/cdt/builds/8.0.0/index.html для Eclipse Indigo или http://www.eclipse.org/cdt/downloads.php для Eclipse Juno) последний Eclipse C / C ++ Development Tooling (Eclipse CDT).

Запустите Eclipse и выберите каталог рабочей области, в котором будут сохранены ваши параметры (например, $ HOME / projects). Нажмите «Справка» -> «Установить новое программное обеспечение» … Нажмите «Добавить …-> Архив …» и выберите созданную CDT-сборку. Затем вы должны выбрать компоненты для установки: нажмите Основные возможности CDT -> Инструменты разработки C / C ++ (и, возможно, другие компоненты по вашему выбору). Затем продолжайте установку и перезапустите Eclipse.

Укажите правильное расположение gdb и .gdbinit в Eclipse и убедитесь, что включена опция Pretty Printing:

 Window -> preferences -> C/C++ -> Debug -> GDB 

Теперь вы можете видеть, что контейнеры STL довольно напечатаны в представлении Variables во время отладки в Eclipse.

Другие команды могут использоваться, чтобы сделать вывод gdb более приличным:

 set print pretty on set print object on set print static-members on set print vtbl on set print demangle on set demangle-style gnu-v3 set print sevenbit-strings off 

ОБНОВЛЕНИЕ: Что касается работы над старыми проектами, см. Пункт 4) в ответе rustyx ниже.

UPDATE2: ubuntu 12.04 имеет libstdc ++ 6-4.6-dbg, который устанавливает /usr/share/gcc-4.6/python/libstdcxx/ модуль python для вас

Я знаю, что это не отвечает на исходный вопрос, но я подумал, что это может быть полезно для тех, кто отлаживает Eclipse в Windows / MinGW . Процедура для Windows аналогична:

1) Получить Python 2.7.x от http://python.org/download/

2) Создайте .gdbinit где-то, что-то вроде этого:

 python import sys sys.path.insert(0, 'C:/MinGW/share/gcc-4.6.1/python') from libstdcxx.v6.printers import register_libstdcxx_printers register_libstdcxx_printers (None) end 

3) Настройте Eclipse CDT для использования C:\MinGW\bin\gdb-python27.exe в качестве отладчика и вашего .gdbinit в качестве файла конфигурации.

4) Повторно создайте сеанс запуска отладки (удалите старый и создайте новый с нуля).

Я хотел бы расширить ответ на Windows 7, потому что некоторые ключевые шаги не учитываются:

Это для пользователей MinGW с Eclipse CDT

0) Если у вас нет python GDB, откройте оболочку / команду и используйте MinGW-get.exe для «установки» GDB с поддержкой Python, например

  MinGw-get.exe install gdb-python 

1a) Получите Python 2.7.x от http://python.org/download/ и установите

1b) Убедитесь, что PYTHONPATH и PYTHONHOME установлены в вашей среде:

  PYTHONPATH should be C:\Python27\Lib (or similar) PYTHONHOME should be C:\Python27 

1c) Добавить PYTHONHOME в вашу PATH

  %PYTHONHOME%;... 

2a) Откройте ввод текста, введите следующие утверждения. Обратите внимание, что 3-я строка указывает, где находятся скрипты python. См. Примечания ниже об этом!

 python import sys sys.path.insert(0, 'C:/MinGW/share/gcc-4.6.1/python') from libstdcxx.v6.printers import register_libstdcxx_printers register_libstdcxx_printers (None) end 

2b) Сохранить как ‘.gdbinit’ ПРИМЕЧАНИЕ. Проводник Windows не позволит вам назвать файл, который начинается с периода из проводника. Большинство текстовых изменений (включая Блокнот) позволят вам. Начальные файлы GDB похожи на «скрипты» команд GDB, которые GBD будет выполнять при загрузке.

2c) Файл .gdbinit должен находиться в рабочем каталоге GDB (скорее всего, это корневой каталог ваших проектов, но ваша IDE может вам рассказать.

3) Откройте диалог настроек Eclipse (или другой IDE). Перейдите в подменю Отладка C ++.

4) Настройте Eclipse для использования C:\MinGW\bin\gdb-python27.exe в качестве отладчика и вашего .gdbinit в качестве файла конфигурации.

5a) Восстановите все конфигурации запуска отладки (удалите старый и создайте новый с нуля).

 --OR-- 

5b) Отредактируйте каждую конфигурацию отладки и укажите ее на новый gdb-python.exe и укажите на нее.

Если у вас возникли проблемы:

– Не забудьте изменить местоположение в каталоге python в приведенном выше коде на Python! Этот каталог создан MinGW, поэтому не смотрите на загрузку симпатичных принтеров, MinGW сделал это для вас на шаге нуль. Просто перейдите к своему директору установки MinGW, папке общего доступа, папке GCC (номер версии), и вы найдете папку python. Это место должно быть в сценарии python, загружаемом GDB.

– Также, .gdbinit является PITA, убедитесь, что его имя правильно и в рабочей папке GDB, что не обязательно, где находится gdb-python.exe! Посмотрите на свой GDB-выход при загрузке GDB, чтобы увидеть, появляется ли во время загрузки a) «python-enabled» и появляются заявления в .gdbinit.

– Наконец, у меня было много проблем с системными переменными. Если python дает вам «ImportError», то, скорее всего, вы не установили PYTHONPATH или PYTHONHOME.

– Каталог с ‘gdb-python27’ (например, C: \ MinGW \ bin ‘) также должен быть на вашем пути, и если это так, он упрощает настройку eclipse, потому что вам не нужно вводить абсолютные пути , Но все же, иногда для .gbdinit нужен путь absoulte. если он работает, вы увидите вывод из gbd (console-> gdb traces), как это при запуске отладчика:

 835,059 4^done 835,059 (gdb) 835,059 5-enable-pretty-printing 835,069 5^done .... 835,129 12^done 835,129 (gdb) 835,129 13source C:\MinGW\bin\.gdbinit 835,139 &"source C:\\MinGW\\bin\\.gdbinit\n" 835,142 13^done 835,142 (gdb) 

Если вы следуете принятому ответу и UPDATE2 и gdb получает ошибку, например:

 Traceback (most recent call last): File "", line 3, in  File "/usr/share/gcc-4.8/python/libstdcxx/v6/printers.py", line 54 raise ValueError, "Cannot find type %s::%s" % (str(orig), name) ^ SyntaxError: invalid syntax /home/[you]/.gdbinit:6: Error in sourced command file: Error while executing Python code. 

Это потому, что ваша версия gdb использует Python 3 (подтвердите с помощью этого ответа )

Обходной путь для этой проблемы объясняется здесь

Кроме того, следуйте инструкциям, чтобы получить исходный код из svn: //gcc.gnu.org, который совместим с Python 3

для отображения STL-объектов в Eclipse CDT, я делаю это, и он отлично работает:

http://www.yolinux.com/TUTORIALS/GDB-Commands.html#STLDEREF

(номер опции 2 в указанной вами ссылке)

Надеюсь это поможет

Давайте будем гением компьютера.