我正在将一些 Windows 头文件翻译成 Delphi。为了验证相关 C 结构的对齐,我需要转储某些 PDB 文件以查看相关的类型信息。为此,我尝试使用PdbXtract,但此工具要求我选择要检查的 PDB 文件。我如何知道哪个 PDB 文件包含所需的结构定义?
2 回答
使用 SysInternals(现为 MS)的 strings.exe 命令行实用程序。我在符号文件夹中运行了以下strings -s . | findstr /i critical_section
命令,得到了很多有趣的输出:
C:\debuggers-v6.12.2.633-x86\sym\verifier.pdb\8878279C450C4F4DA6B252A4B824B4981\verifier.pdb: _RTL_CRITICAL_SECTION
C:\debuggers-v6.12.2.633-x86\sym\verifier.pdb\8878279C450C4F4DA6B252A4B824B4981\verifier.pdb: U_RTL_CRITICAL_SECTION@@
C:\debuggers-v6.12.2.633-x86\sym\wntdll.pdb\B193CACD9AB340E7BF3434EA1ABBE0482\wntdll.pdb: _RTL_CRITICAL_SECTION
C:\debuggers-v6.12.2.633-x86\sym\wntdll.pdb\B193CACD9AB340E7BF3434EA1ABBE0482\wntdll.pdb: U_RTL_CRITICAL_SECTION@@
C:\debuggers-v6.12.2.633-x86\sym\wntdll.pdb\B193CACD9AB340E7BF3434EA1ABBE0482\wntdll.pdb: _RTL_CRITICAL_SECTION_DEBUG
在使用十六进制编辑器调查 PDB 文件后,我通过使用类似grep 的工具搜索包含以下正则表达式模式的 PDB 文件名来了解哪个 PDB 文件包含所需的结构定义:
\x15\x00\x00\x80\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00_Struct_Name\x00