Отладка Программ На C++ В Ос Gnu/Linux

Так уж получилось, что в силу своих должностных обязанностей я провожу много времени с операционными системами семейства 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 в своем домашнем каталоге.

со следующим содержанием:

   

# # .

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

Вроде бы всё хорошо, но есть проблема: в последних версиях GNU/Linux gdb скомпилирован с поддержкой Python версии 3.*, а по умолчанию установлен Python версии 2.*.

Для решения этой проблемы, т.е.

сделать скрипты с поддержкой обеих версий питона есть патч, его можно найти в интернете, скачать можно здесь: _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++ #отладка

Вместе с данным постом часто просматривают: