Reading a .pdb file

自古美人都是妖i 提交于 2019-11-27 18:48:26
Eilon

If you mean PDB as in a "program database" that the debugger uses:

PDB files contain data about a file such as an EXE or DLL that is used to aid in debugging. There are public interfaces that allow you to extract data from the file. See examples here:

If you mean PDB as in a Palm Pilot Database, then I know nothing about it, but the file format is available here:

Microsoft released the source code of their PDB formats, so other compiler developers like the LLVM team can implement the PDB format easier.

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

To actually dump the output of a file, just use this:

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

cvdump Whatever.pdb

Nowadays, I highly recommend LLVM's PDB parser, llvm-pdbutil.

It is an excellent and feature rich PDB dumper and great to complement Microsoft's cvdump.
For details and documentation, see:

Some useful commands for getting started:

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

Getting llvm-pdbutil:

As per LLVM 7.0.0, the latest official release, llvm-pdbutil.exe is not distributed with the LLVM binaries, so it has to be built from source.

However, if you're OK with a non official, Windows 64-bit binary, my home-brewed llvm-pdbutil builds are available here (note Visual C++ 2015 Redistributable is required):

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

Building llvm-pdbutil:

For building llvm-pdbutil from source on Windows, you'll have to get and setup LLVM build. Follow the instructions on https://llvm.org/docs/GettingStarted.html.

There are some needed additions for PDB support, though. To summarize (for VS 2017):

  • Clone the LLVM repo: git clone https://github.com/llvm/llvm-project.git
  • cd llvm-project
  • mkdir build && cd build
  • If not running from Visual Studio console: 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
  • In Visual Studio, build the Tools/llvm-pdbutil project.

You can use the DBH tool from Windows SDK.

&'C:\Program Files\Debugging Tools for Windows (x64)\dbh.exe' -v MySymbol.pdb dump
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!