web-dev-qa-db-ja.com

.pdbファイルを読む

私は.pdb形式のファイルをたくさん持っていますが、そのうちのいくつかはダウンロードしましたが、今までは中身を使用したり読んだりすることができませんでした。

開け方を知っている人はいますか?

23
jones

デバッガーが使用する「プログラムデータベース」のようにPDBを意味する場合:

PDBファイルには、EXEやデバッグに役立つDLLなどのファイルに関するデータが含まれています。ファイルからデータを抽出できるパブリックインターフェイスがあります。例を参照してください。

Palm PilotデータベースのようにPDBを意味する場合、私はそれについて何も知りませんが、ファイル形式はここで利用可能です:

42
Eilon

MicrosoftはPDB形式のソースコードをリリースしたため、LLVMチームなどの他のコンパイラ開発者はPDB形式を簡単に実装できます。

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

実際にファイルの出力をダンプするには、これを使用します:

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

cvdump Whatever.pdb
22
lama12345

現在、LLVMのPDBパーサーllvm-pdbutilを強くお勧めします。

優れた機能豊富なPDBダンパーであり、Microsoftのcvdumpを補完するのに最適です。
詳細とドキュメントについては、以下を参照してください。

始めるためのいくつかの便利なコマンド:

  • _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_プロジェクトをビルドします。
6
valiano

Windows SDKの DBHツール を使用できます。

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