0

我想了解符号调试器是如何工作的?什么是调试符号表以及它如何促进源代码级调试。我完全没有注意到调试器的幕后操作……当我为 gcc 提供“-g”选项时实际发生了什么,写入目标文件的内容以及此类复杂性。如果 SO 社区可以解释并指导我获取更多信息的来源,我会很高兴

4

2 回答 2

3

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

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

于 2009-02-24T17:38:59.743 回答
0

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

DWARF 3 调试规范

于 2009-07-17T22:31:37.547 回答