【发布时间】:2010-09-21 04:20:14
【问题描述】:
PointerToSymbolTable:
COFF 符号的文件偏移量 表,如果没有 COFF 符号表,则为零 存在。 PE图像为0 文件,因为调试信息是 折旧。
为什么它说调试信息对于 PE 映像已贬值? AFIAK,windows中的可执行文件也可以携带调试信息,是不是这样?
【问题讨论】:
标签: debug-symbols portable-executable
PointerToSymbolTable:
COFF 符号的文件偏移量 表,如果没有 COFF 符号表,则为零 存在。 PE图像为0 文件,因为调试信息是 折旧。
为什么它说调试信息对于 PE 映像已贬值? AFIAK,windows中的可执行文件也可以携带调试信息,是不是这样?
【问题讨论】:
标签: debug-symbols portable-executable
正如它所说的 PE 映像的调试信息已被贬低,调试符号不再直接嵌入到 PE 中。而是存储在包含调试信息的 .PDB 文件中。该文件的格式未记录,因此您只能通过调用 DbgHelp.dll 中的 API 来从该文件中提取信息。
【讨论】:
请注意您是从哪里读到的,但 MSDN 中的 this page 没有这样的警告。
您需要记住,MSDN 在某种程度上是特定于 Microsoft 的。在 Microsoft 世界中,coff 调试信息早已被 .PDB 文件取代,因此当您使用 Microsoft 编译器时,几乎不会在可执行映像中获得符号inside(因此PointerToSymbolTable 将始终为 0)。
仍然有使用嵌入式 COFF 数据的程序(例如 MinGW,我相信)。
【讨论】: