Вопрос

Я хотел бы понять, как работают символьные отладчики?.Что такое таблица символов отладки и как она облегчает отладку на уровне исходного кода.Я совершенно не обращаю внимания на закулисные действия отладчиков..что на самом деле происходит, когда я предоставляю опцию '-g' в gcc, что записывается в объектный файл и подобные тонкости.Я был бы рад, если сообщество SO сможет объяснить и направить меня к источникам, где я могу получить больше информации

Это было полезно?

Решение

Файлы символов - это просто список всех определенных глобальных переменных и функций, а также их смещений с начала модуля.Он также содержит список всех структур и описывает их поля.

Таким образом, когда GDB / WinDbg загружается, он может просмотреть EIP (текущую инструкцию) и сопоставить адрес чему-то вроде (someFunc + 0x25).Конечно, в большинстве символов также закодирована информация о строке, поэтому можно пойти еще дальше и сказать: "someFunc + 0x25 находится ближе всего к foo.cpp строке 57".

Другие советы

Ознакомьтесь со спецификацией отладки DWARF для подробного описания всей отладочной информации, генерируемой gcc, и того, как отладчик ее использует.

Спецификация отладки DWARF 3

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top