关于 Windows 中带有调试信息的可执行文件
Posted
技术标签:
【中文标题】关于 Windows 中带有调试信息的可执行文件【英文标题】:About executable with debug information in windows 【发布时间】:2010-09-21 04:20:14 【问题描述】:PointerToSymbolTable:
COFF 符号的文件偏移量 表,如果没有 COFF 符号表,则为零 存在。 PE图像为0 文件,因为调试信息是 折旧。
为什么它说调试信息对于 PE 映像已贬值? AFIAK,windows中的可执行文件也可以携带调试信息,是不是这样?
【问题讨论】:
【参考方案1】:正如它所说的 PE 映像的调试信息已被贬低,调试符号不再直接嵌入到 PE 中。而是存储在包含调试信息的 .PDB 文件中。该文件的格式未记录,因此您只能通过调用 DbgHelp.dll 中的 API 来从该文件中提取信息。
【讨论】:
【参考方案2】:请注意您是从哪里读到的,但 MSDN 中的 this page 没有这样的警告。
您需要记住,MSDN 在某种程度上是特定于 Microsoft 的。在 Microsoft 世界中,coff 调试信息早已被 .PDB 文件取代,因此当您使用 Microsoft 编译器时,几乎不会在可执行映像中获得符号inside(因此PointerToSymbolTable
将始终为 0)。
仍然有使用嵌入式 COFF 数据的程序(例如 MinGW,我相信)。
【讨论】:
PE 中调试符号的结构名称是什么?以上是关于关于 Windows 中带有调试信息的可执行文件的主要内容,如果未能解决你的问题,请参考以下文章
关于QtCreator中三种不同编译版本 debugreleaseprofile 的区别
是否可以调试由没有 gdb 标志编译的可执行文件生成的核心文件?