Отладчик GDB является платформенно независимым отладчиком общего назначения.
Он может быть использован для отладки программ, которые написаны на разных языках программирования и скомпилированы с помощью GCC.
В частности, с его помощью можно отлаживать Ада-программы, которые скомпилированы с помощью компилятора GNAT.
Последние версии отладчика GDB обеспечивают поддержку Ада-программ и позволяют работать со сложными структурами данных Ады.
Следует заметить, что здесь приводится только краткий обзор, а исчерпывающая информация по использованию отладчика GDB содержится в руководстве "Отладка с помощью GDB" (Debugging with GDB).
В процессе компиляции программы, компилятор, опционально, способен записывать в генерируемый объектный файл отладочную информацию, которая может включать номера строк, описываемые типы данных и переменные
Эта информация хранится в результирующем файле отдельно от сгенерированного объектного кода.
Следует заметить, что наличие отладочной информации может значительно увеличить результирующий файл, но отладочная информация никак не влияет на исполняемый код, который непосредственно загружается в память, и на его производительность.
Генерация отладочной информации инициируется указанием опциии -g
в команде запуска компилятора gnatgcc или утилиты gnatmake.
Необходимо особо подчеркнуть, что использование этой опции никак не влияет на генерируемый машинный код.
Отладочная информация записывается в стандартном системном формате, который используется множеством инструментальных средств, включая отладчики и профиляторы.
Обычно, используемый формат разработан для описания семантики и типов языка C, но GNAT реализует схему трансляции использование которой позволяет кодировать информацию о типах и переменных Ады в стандартном формате языка C.
В большинстве случаев подробности реализации этой схемы трансляции не представляют интереса для пользователя, поскольку GDB выполняет необходимые преобразования автоматически.
Однако, в случае необходимости, информация об этой схеме трансляции может быть получена из файла exp_dbug.ads