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

А Debugging Symbol Tableсопоставляет инструкции в скомпилированной двоичной программе с их соответствующей переменной, функцией или строкой в ​​исходном коде. Это сопоставление может быть примерно таким:

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

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

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

  • Таблица символов работает для конкретной версии программы - при изменении программы необходимо создать новую таблицу.

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

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

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

gcc hello.cc -o hello

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

gcc -g hello.cc -o hello