シンボルとシンボル ファイル

アプリケーション、ライブラリ、ドライバー、またはオペレーティング システムがリンクされると、.exeファイルと.dll ファイルを作成するリンカーによって、シンボル ファイル と呼ばれる追加のファイルも多数作成されます。

シンボル ファイルには、バイナリを実行するときは実際には必要ありませんが、デバッグ プロセスにおいては非常に役に立つ、さまざまなデータが保持されています。

通常、シンボル ファイルには次のものが含まれる場合があります。

  • グローバル変数

  • ローカル変数

  • 関数名とそのエントリ ポイントのアドレス

  • フレーム ポインター省略 (FPO) レコード

  • ソース行番号

これらの各項目は、個別にシンボル 呼ばれます。 たとえば、1 つのシンボル ファイル Myprogram.pdb には、グローバル変数と関数名、数百のローカル変数など、数百のシンボルが含まれている場合があります。 多くの場合、ソフトウェア企業は、 パブリック シンボルプライベート シンボルの両方を含む完全なシンボル ファイルと、パブリック シンボルのみを含む縮小 (削除) ファイルという 2 つのバージョンの各シンボル ファイルをリリースします。 詳細については、「パブリック シンボルとプライベート シンボル」を参照してください。

デバッグ時に、デバッグするターゲットに関連付けられているシンボル ファイルにデバッガーがアクセスできることを確認する必要があります。 ライブ デバッグとデバッグの両方のクラッシュ ダンプ ファイルにはシンボルが必要です。 デバッグするコードの適切なシンボルを取得し、これらのシンボルをデバッガーに読み込む必要があります。

Windows, シンボル

Windows では、拡張子が .pdb のファイルにシンボルが保持されます。

コンパイラとリンカーがシンボル形式を制御します。 Visual C++ リンカーは、すべてのシンボルを .pdb ファイルに配置します。

Windows オペレーティング システムは 2 つのバージョンでビルドされました。 無料ビルド (または リテール ビルド) には比較的小さなバイナリがあり、 チェックビルド (または デバッグ ビルド) には大きなバイナリがあり、コード自体にデバッグ シンボルが追加されています。 チェック ビルドは、Windows 10 バージョン 1803 より前の古いバージョンの Windows で使用できました. これらのビルドはそれぞれ独自のシンボル ファイルを持っていました。 Windows でターゲットをデバッグする場合は、ターゲット上の Windows のビルドに一致するシンボル ファイルを使用する必要があります。

次の表に、標準の Windows シンボル ツリーに存在するいくつかのディレクトリを示します。

ディレクトリ 次のシンボル ファイルが含まれています。

ACM

Microsoft Audio Compression Manager ファイル

形式

実行可能ファイル (.com)

CPL

[コントロール パネル プログラム

[DLL]

ダイナミック リンク ライブラリ ファイル (.dll)

DRV

ドライバー ファイル (.drv)

EXE

実行可能ファイル (.exe)

SCR

Screen-saver files

SYS

ドライバー ファイル (.sys)