プログラム データベース ファイル (C++)

更新 : 2011 年 3 月

このトピックの内容は、次の製品に該当します。

エディション

Visual Basic

C#

F#

C++

Web Developer

Express

トピック該当なし トピック該当なし トピック該当なし トピック該当 トピック該当なし

Pro、Premium、Ultimate

トピック該当なし トピック該当なし トピック該当なし

トピック該当

トピック該当なし

プログラム データベース (PDB) ファイルは、デバッグとプロジェクト状態情報を保持します。この情報により、プログラムのデバッグ構成のインクリメンタル リンクが可能になります。 /ZI または /Zi (C/C++ 用) を使用して構築すると、PDB ファイルが作成されます。

Visual C++ では、コンパイラにより作成される PDB ファイルを /Fd オプションで指定します。 Visual Studio でウィザードを使ってプロジェクトを作成する場合は、/Fd オプションが project.PDB という名前の PDB ファイルを作成するように設定されます。

メイクファイルを使って C/C++ アプリケーションをビルドするときに、/ZI または /Zi を指定して /Fd を指定しない場合は、次の 2 つの PDB ファイルが作成されます。

  • VC80.PDB   より一般的には、VCx0.PDB。x は、Visual C++ のバージョンを表します。 このファイルには、個別の OBJ ファイルのあらゆるデバッグ情報が格納されます。このファイルは、プロジェクトのメイクファイルと同じディレクトリに配置されます。

  • project.PDB   このファイルには、.exe ファイルのあらゆるデバッグ情報が格納されます。 C/C++ の場合は、\debug サブディレクトリに配置されます。

OBJ ファイルが作成されるたびに、C/C++ コンパイラはデバッグ情報を VCx0.PDB に挿入します。 挿入される情報には、型情報が含まれますが、関数定義などのシンボル情報は含まれません。 このため、ソース ファイルごとに <windows.h> などの共通ヘッダー ファイルをインクルードしているとしても、共通ヘッダー ファイルの typedef は一度格納されるだけで、OBJ ファイルごとに格納されるわけではありません。

リンカーは project.PDB を作成します。このファイルには、プロジェクトの EXE ファイルのデバッグ情報が格納されます。 project.PDB ファイルには、VCx0.PDB に含まれる型情報だけでなく、関数プロトタイプをはじめとするあらゆるデバッグ情報が格納されます。 どちらの PDB ファイルもインクリメンタル更新が可能です。 またリンカーも、作成する .exe ファイルや .dll ファイルに .pdb ファイルへのパスを埋め込みます。

Visual Studio デバッガーでは、EXE ファイルまたは DLL ファイルの PDB へのパスを使用して、project.PDB ファイルを検索します。 指定された場所に PDB ファイルが見つからないか、(プロジェクトが別のコンピューターに移動されたなど) パスが無効である場合は、EXE ファイルが格納されているパスを検索します。このパスは、[オプション] ダイアログ ボックス ([デバッグ] - [シンボル]) で指定されたシンボル パスです。 デバッガーで .PDB ファイルが見つからない場合、[シンボル検索] ダイアログ ボックスが表示されます。このダイアログ ボックスで、シンボルを検索したり、検索パスに新しい場所を追加したりできます。

重要

デバッガーは、バイナリがビルドされたときに作成された PDB と正確に一致するバイナリの PDB のみを読み込みます (つまり、PDB は、オリジナルまたはコピーである必要があります)。 コンパイラはバイナリを作成するときにいくつかの要素を考慮するため、コード自体に変更が加えられていない場合でもバイナリの実際のレイアウトが変更されることがあります。 詳細については、MSDN ブログの投稿「Why does Visual Studio require debugger symbol files to *exactly* match the binary files that they were built with? (Visual Studio においてデバッガー シンボル ファイルがビルド時のバイナリ ファイルと "正確に" 一致することが求められる理由)」を参照してください。

参照

概念

プログラム データベース ファイル (C#、F#、および Visual Basic)

その他の技術情報

デバッグの設定と準備

履歴の変更

日付

履歴

理由

2011 年 3 月

正確に一致する PDB の必要性に関する情報とリンクを追加しました。

情報の拡充