.PDB ファイルとは?
拡張子が .pdb のファイルは、コンパイルされた実行可能ファイル (EXE/DLL) のデバッグ情報を含むプログラム データベース ファイルです。 PDB ファイルは、アプリケーション プログラムがデバッグ モードでコンパイルされると、Microsoft コンパイラによって生成されます。 PDB ファイルの存在は、モジュールのすべてのシンボルに関する重要な情報が含まれているため、実行可能ファイルのリバース エンジニアリングに役立ちます。このため、これらのファイルは最終的な実行可能ファイルとは別に保持されます。 Microsoft の DgbHelp API は、PDB ファイルを開いて、パブリックとエクスポート、グローバル シンボル、ローカル シンボル、タイプ データ、ソース ファイル、および行番号。
PDB ファイル形式
PDB は Microsoft 独自のファイル形式であり、まだ公式に文書化されていません。ただし、開始ドキュメントは ここ で入手でき、参照できます。
PDB ストリーム
PDB ファイルは複数のストリームで構成され、各ストリームは仮想の個別ファイルとして機能し、情報が含まれています。 PDB ファイル ライターはこれらのファイルに書き込むことができ、ファイルは明示的なコミットが発行された後にのみファイナライズされます。コンパイラは PDB ファイルへの書き込みを続行できますが、すべてのユーザー コードが正常にコンパイルされた場合にのみコミットします。 PDB ファイルは、次のストリームで構成されます。
ストリーム番号 | 目次 | 簡単な説明 |
---|---|---|
1 | Pdb (ヘッダー) | バージョン情報、およびこの PDB を EXE に接続するための情報 |
2 | Tpi (タイプ マネージャー) | 実行可能ファイルで使用されるすべてのタイプ。 |
3 | Dbi (デバッグ情報) | セクションへの貢献と「Mods」のリストを保持します |
4 | 名前マップ | ハッシュされた文字列テーブルを保持 |
4-(n+4) | n Mod’s (モジュール情報) | 各 Mod ストリームは、1 つのコンパイルのシンボルと行番号を保持します |
n+4 | グローバル シンボル ハッシュ | グローバル シンボルを名前で検索できるインデックス |
n+5 | パブリック シンボル ハッシュ | アドレスによるパブリック シンボルの検索を可能にするインデックス |
n+6 | シンボルレコード | グローバルおよびパブリック シンボルの実際のシンボル レコード |
n+7 | タイプハッシュ | TPI ストリームで使用されるハッシュ。 |
PDB ファイルの各ストリームは、必ずしも連続した番号が付けられていない複数のページで構成されます。
PDBヘッダー
PDB ファイルには、特定の形式を識別して検証するための署名で構成されるヘッダーが含まれています。署名の長さは、PDB 形式によって異なります。ヘッダーは 1 ページよりも長くなる場合があります。
PDBメタデータ
PDB メタデータは、すべてのコンポーネント ストリームを認識し、各ストリームの長さとページのシーケンスを提供します。注文は連続してストリームに与えられます。 0 から始まります。メタデータの一部を含む順序付けられていないルート ストリームもあります。