Так уж получилось, что в силу своих должностных обязанностей я провожу много времени с операционными системами семейства GNU/Linux. Моя основная деятельность — разработка программного обеспечения на языке C++.
Итак, основная проблема при использовании отладчика — отображение сложных контейнеров, например, stl-контейнеров.
Предлагаемое мной решение актуально для GDB. Этот отладчик поддерживает сценарии, написанные на Python, а механизмы отображения сложных объектов называются симпатичными принтерами.
Те.
Чтобы отладчик все правильно отображал, нам нужно указать ему, где находятся скрипты с этими симпатичными принтерами.
Чтобы указать дополнительные команды отладчику, необходим файл .
gdbinit. Так что, попробую все отформатировать, и инструкцию, и сделать так, чтобы было удобнее читать, и сам не забуду.
1. Установите gcc, g++, gdb, libstdc++-dbg. , последнее очень важно, так как в новых дистрибутивах именно с отладочными символами устанавливаются скрипты с симпатичными принтерами, например, в Ubuntu 14.04 появляется каталог /usr/share/gcc-4.8/python/libstdcxx. 2. Создайте файл .
gdbinit в своем домашнем каталоге.
со следующим содержанием:
Вроде бы всё хорошо, но есть проблема: в последних версиях GNU/Linux gdb скомпилирован с поддержкой Python версии 3.*, а по умолчанию установлен Python версии 2.*.# # .
gdbinit : GDB Config file # # add python pretty printers for STL python import sys sys.path.insert(0, '/usr/share/gcc-4.8/python') from libstdcxx.v6.printers import register_libstdcxx_printers register_libstdcxx_printers (None) end set auto-load local-gdbinit on 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
Для решения этой проблемы, т.е.
сделать скрипты с поддержкой обеих версий питона есть патч, его можно найти в интернете, скачать можно здесь: _https:// www.dropbox.com/s/ef265fbo00yk1x8/libstdcpp.patch .
Файл /usr/share/gcc-4.8/python/libstdcxx/v6/printers.py может быть изменен.
И снова вроде бы все хорошо, но опять проблема: на некоторых дистрибутивах не устанавливаются те же самые скрипты с красивыми принтерами.
Для этого есть svn-репозиторий _svn://.
gcc.gnu.org/svn/gcc/trunk/libstdc++-v3/python .
Вот ссылка с дополнительным описанием: _http:// sourceware.org/gdb/wiki/STLSupport .
Если это ваш случай, то после скачивания репозитория не забудьте изменить путь к скачанным скриптам в файле .
gdbinit. 3. При сборке проекта с отладкой не забудьте указать флаг _GLIBCXX_DEBUG. Это необходимо для правильного отображения контейнеров, таких как stringstream. В заключение хочу сказать, что «танцевать» с симпатичными принтерами (второй пункт) не обязательно, если вы используете в качестве IDE QtCreator, потому что эта IDE использует свои скрипты для взаимодействия с gdb. Теги: #C++ #linux #GDB #STL #C++ #отладка
-
Посвящается Дню Радио.
19 Oct, 24 -
Определение Bluetooth-Соединения Под Android
19 Oct, 24 -
Голос 2 Wap
19 Oct, 24 -
Интеллектуальный Школьный Совет
19 Oct, 24