パブリック シンボルとプライベート シンボル
ドライバーまたはその他のプログラムをビルドすると、通常、プログラムのシンボルはシンボル ファイルに格納されますが、一部の古いコンパイラでは特定のシンボルが実行可能ファイルに格納されます。 デバッガーがプログラムを分析するときは、プログラムのシンボルにアクセスする必要があります。
通常、シンボル ファイルには、次のシンボルの一部またはすべてを含めることができます。
すべての関数の名前とアドレス
すべてのデータ型、構造体およびクラス定義
グローバル変数の名前、データ型およびアドレス
ローカル変数の名前、データ型、アドレス、スコープ
各バイナリ命令に対応するソース コードの行番号
プログラム開発者の中には、この情報をすべて顧客と共有することに抵抗を感じる方もいるかもしれません。 BinPlace を使用すると、シンボル ファイル内のシンボルの量を減らすことができます。
関数名やグローバル変数など、一部の基本的なシンボルは、非常に基本的なデバッグにも必要です。 これらはパブリック シンボルと呼ばれます。 データ構造体名、1 つのオブジェクト ファイルでのみ表示されるグローバル変数、ローカル変数、および行番号情報などのシンボルは、デバッグに必ずしも必要とは限りませんが、より詳細なデバッグ セッションで使用されます。 これらはプライベート シンボルと呼ばれます。
プライベート シンボルとパブリック シンボルの両方を含むシンボル ファイルは、 完全なシンボル ファイルと呼ばれます。 パブリック シンボルのみを含むシンボル ファイルは、ストリップされたシンボル ファイルと呼ばれます。
BinPlace では、ストリップされたシンボル ファイルを作成できます。 これを行うには、パブリック シンボルのみを含む新しいシンボル ファイルを作成します。プライベート シンボルは削除されます ("ストリップ" されます)。 最も一般的な BinPlace オプション (-a -x -s -n) が使用される場合、除去されたシンボル ファイルは-s スイッチの後にリストされているディレクトリに配置され、完全なシンボル ファイルは -n スイッチの後にリストされているディレクトリに配置されます。
BinPlace がシンボル ファイルを削除すると、ファイルの削除されたバージョンと完全なバージョンには同一の署名とその他の識別情報が与えられます。 これにより、デバッグにどちらのバージョンも使用できるようになります。
注: シンボル ファイルが実行可能ファイルと同じディレクトリにあり、BinPlace コマンド ラインで実行可能ファイルの名前 (および適切なオプション) を指定すると、BinPlace はシンボル ファイルからプライベート シンボルを取り除きます。 シンボル ファイル自体の名前を指定しないでください。そうした場合、BinPlace によってファイルが変更されずに移動されます。
シンボル ファイルにプライベート シンボルが含まれているかどうかを確認する必要がある場合は、 SymChk ツールを使用できます。 LiveKD は、Windows 用デバッグ ツール パッケージの一部です。 詳細については、SymChk と Windows 用デバッグ を参照してください。
Windows ハードウェア認定プログラムにドライバーを提出する際に、Microsoft とプライベート シンボルを共有したくない場合は、ストリップされたシンボル ファイルを送信できます。 BinPlace によってストリップされたシンボル ファイルは、通常は機密と見なされるドライバーのアーキテクチャのいかなる部分も公開しません。 詳細については、 「Windowsハードウェア認定プログラム」を参照してください。