Reading a .pdb file

后端 未结 5 1084
夕颜
夕颜 2020-12-02 13:13

I have a lot of files in .pdb format, some of them downloaded, but until now I can\'t use or read what\'s inside, so I\'m looking for how to read and view the .pdb file form

相关标签:
5条回答
  • 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:

    • LLVM on Windows now supports PDB Debug Info (LLVM Project Blog)
    • llvm-pdbutil - PDB File forensics and diagnostics (LLVM Homepage)

    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.
    0 讨论(0)
  • 2020-12-02 14:02

    PDB Viewers (GUI)

    • DotPeek

    Portable PDB

    • Tools

      • SourceLink: sourcelink print-urls Foo.pdb
    • Programmatic Access

      • Microsoft.DiaSymReader.PortablePdb

    Classic (non-portable) PDB

    • Tools
      1. llvm-pdbutil: llvm-pdbutil dump -all Foo.pdb
      2. cvdump : cvdump Foo.pdb
      3. DBH: dbh.exe -v Foo.pdb dump
      4. PDBStr: pdbstr.exe -r -p:Foo.pdb -s:StreamName
    • Programmatic Access
      • DIA SDK
    0 讨论(0)
  • 2020-12-02 14:04

    You can use the DBH tool from Windows SDK.

    &'C:\Program Files\Debugging Tools for Windows (x64)\dbh.exe' -v MySymbol.pdb dump
    
    0 讨论(0)
  • 2020-12-02 14:05

    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
    
    0 讨论(0)
  • 2020-12-02 14:14

    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:

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

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

    • http://www.hotpaw.com/rhn/palm/pdb.txt
    0 讨论(0)
提交回复
热议问题