了解符号调试器

时间:2009-02-24 17:32:00

标签: debugging debug-symbols

我想了解符号调试器的工作原理吗?什么是调试符号表以及它如何促进源级调试。我完全忘记了调试器的幕后动作。当我向gcc提供'-g'选项,什么写入目标文件和这样的复杂时,实际上会发生什么。如果SO社区可以解释并指导我获取更多信息的来源,我会很高兴

2 个答案:

答案 0 :(得分:3)

符号文件只是所有已定义的全局变量和函数的列表,以及它们从模块开头的偏移量。它还有一个所有结构的列表并描述了它们的字段。

这样,当GDB / WinDbg加载时,它能够查看EIP(当前指令)并将地址映射到类似(SomeFunc + 0x25)的地址。当然,大多数符号也有编码的行信息,所以它可以更进一步说“SomeFunc + 0x25最接近foo.cpp第57行”。

答案 1 :(得分:0)

查看DWARF调试规范,深入了解gcc生成的所有调试信息以及调试器如何使用它。

DWARF 3 Debugging Specification