Учебники

GDB — символы отладки

Таблица символов отладки отображает инструкции в скомпилированной двоичной программе на соответствующие им переменные, функции или строки в исходном коде. Это отображение может быть что-то вроде:

  • Программная инструкция ⇒ имя элемента, тип элемента, исходный файл, номер строки.

Программная инструкция ⇒ имя элемента, тип элемента, исходный файл, номер строки.

Таблицы символов могут быть встроены в программу или сохранены в виде отдельного файла. Поэтому, если вы планируете отлаживать свою программу, то необходимо создать таблицу символов, которая будет содержать необходимую информацию для отладки программы.

Мы можем вывести следующие факты о таблицах символов:

  • Таблица символов работает для определенной версии программы — если программа изменяется, новая таблица должна быть создана.

  • Отладочные сборки часто больше и медленнее, чем обычные (не отладочные); отладочные сборки содержат таблицу символов и другую вспомогательную информацию.

  • Если вы хотите отладить бинарную программу, которую вы не скомпилировали самостоятельно, вы должны получить таблицы символов у автора.

Таблица символов работает для определенной версии программы — если программа изменяется, новая таблица должна быть создана.

Отладочные сборки часто больше и медленнее, чем обычные (не отладочные); отладочные сборки содержат таблицу символов и другую вспомогательную информацию.

Если вы хотите отладить бинарную программу, которую вы не скомпилировали самостоятельно, вы должны получить таблицы символов у автора.

Чтобы GDB мог читать всю эту информацию построчно из таблицы символов, нам нужно скомпилировать ее немного по-другому. Обычно мы компилируем наши программы как:

gcc hello.cc -o hello 

Вместо этого нам нужно скомпилировать с флагом -g, как показано ниже: