Таблица символов отладки отображает инструкции в скомпилированной двоичной программе на соответствующие им переменные, функции или строки в исходном коде. Это отображение может быть что-то вроде:
-
Программная инструкция ⇒ имя элемента, тип элемента, исходный файл, номер строки.
Программная инструкция ⇒ имя элемента, тип элемента, исходный файл, номер строки.
Таблицы символов могут быть встроены в программу или сохранены в виде отдельного файла. Поэтому, если вы планируете отлаживать свою программу, то необходимо создать таблицу символов, которая будет содержать необходимую информацию для отладки программы.
Мы можем вывести следующие факты о таблицах символов:
-
Таблица символов работает для определенной версии программы — если программа изменяется, новая таблица должна быть создана.
-
Отладочные сборки часто больше и медленнее, чем обычные (не отладочные); отладочные сборки содержат таблицу символов и другую вспомогательную информацию.
-
Если вы хотите отладить бинарную программу, которую вы не скомпилировали самостоятельно, вы должны получить таблицы символов у автора.
Таблица символов работает для определенной версии программы — если программа изменяется, новая таблица должна быть создана.
Отладочные сборки часто больше и медленнее, чем обычные (не отладочные); отладочные сборки содержат таблицу символов и другую вспомогательную информацию.
Если вы хотите отладить бинарную программу, которую вы не скомпилировали самостоятельно, вы должны получить таблицы символов у автора.
Чтобы GDB мог читать всю эту информацию построчно из таблицы символов, нам нужно скомпилировать ее немного по-другому. Обычно мы компилируем наши программы как:
gcc hello.cc -o hello
Вместо этого нам нужно скомпилировать с флагом -g, как показано ниже: