关于查看器:读取.pdb文件

Reading a .pdb file

我有很多.pdb格式的文件,有些文件已下载,但是直到现在我还不能使用或读取其中的内容,因此我正在寻找如何从MS读取和查看.pdb文件格式的方法Windows XP。

任何人可能都知道如何打开它?


如果您将PDB表示为调试器使用的"程序数据库"中的内容,则:

PDB文件包含有关诸如EXE或DLL之类的文件的数据,这些数据用于帮助调试。有公共接口允许您从文件中提取数据。在此处查看示例:

  • http://blogs.msdn.com/jmstall/archive/2005/08/25/pdb2xml.aspx
  • http://www.codeproject.com/KB/bugs/PdbParser.aspx

如果您将PDB当作Palm Pilot Database中的意思,那么我对此一无所知,但是文件格式在此处可用:

  • http://www.hotpaw.com/rhn/palm/pdb.txt

Microsoft发布了其PDB格式的源代码,因此LLVM团队等其他编译器开发人员可以更轻松地实现PDB格式。

https://github.com/Microsoft/microsoft-pdb/

要实际转储文件的输出,只需使用以下命令:

https://github.com/Microsoft/microsoft-pdb/blob/master/cvdump/cvdump.exe

1
cvdump Whatever.pdb


如今,我强烈建议LLVM的PDB解析器llvm-pdbutil。

这是一个出色且功能丰富的PDB转储程序,非常适合补充Microsoft的cvdump。
有关详细信息和文档,请参见:

  • Windows上的LLVM现在支持PDB调试信息(LLVM项目博客)
  • llvm-pdbutil-PDB文件取证和诊断(LLVM主页)

一些有用的入门命令:

  • llvm-pdbutil dump -all your.pdb
  • llvm-pdbutil bytes -syms your.pdb
  • llvm-pdbutil -help

获取llvm-pdbutil:

根据LLVM 7.0.0(最新的正式发行版,llvm-pdbutil.exe)未随LLVM二进制文件一起分发,因此必须从源代码构建。

但是,如果您可以使用非官方的Windows 64位二进制文??件,则可以在此处使用我的自制llvm-pdbutil版本(请注意,需要Visual C 2015 Redistributable):

https://github.com/shaharv/llvm-pdbutil-builds/releases

构建llvm-pdbutil:

要在Windows上从源代码构建llvm-pdbutil,您必须获取并设置LLVM构建。
请按照https://llvm.org/docs/GettingStarted.html上的说明进行操作。

不过,对于PDB支持,还需要一些补充。总结(对于VS 2017):

  • 克隆LLVM存储库:git clone https://github.com/llvm/llvm-project.git
  • cd llvm-project
  • mkdir build && cd build
  • 如果不是从Visual Studio控制台运行:set VSINSTALLDIR=c:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Community\\
  • cmake -G"Visual Studio 15 2017" -A x64 -Thost=x64 -DLLVM_ENABLE_DIA_SDK=ON ../llvm
  • 在Visual Studio中,构建Tools/llvm-pdbutil项目。

PDB查看器(GUI)

  • 点偷看

便携式PDB

  • 工具

    • SourceLink:sourcelink print-urls Foo.pdb
  • 程序访问

    • Microsoft.DiaSymReader.PortablePdb

经典(非便携式)PDB

  • 工具

  • llvm-pdbutil:llvm-pdbutil dump -all Foo.pdb
  • cvdump:cvdump Foo.pdb
  • DBH:dbh.exe -v Foo.pdb dump
  • PDBStr:pdbstr.exe -r -p:Foo.pdb -s:StreamName
  • 程序访问

    • DIA SDK


您可以使用Windows SDK中的DBH工具。

1
&'C:\\Program Files\\Debugging Tools for Windows (x64)\\dbh.exe' -v MySymbol.pdb dump