Понимание символического отладчика - PullRequest
0 голосов
/ 24 февраля 2009

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

Ответы [ 2 ]

3 голосов
/ 24 февраля 2009

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

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

0 голосов
/ 18 июля 2009

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

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

...