次の方法で共有


シンボルの使用

シンボル ファイルやシンボル サーバーの使用など、シンボルの概要については、「シンボル」を参照してください。

シンボルの名前と位置

シンボルの名前からその位置を調べるには、GetOffsetByName を使用します。 シンボル名の指定に使用される構文の詳細については、「シンボルの構文とシンボルの照合」を参照してください。

シンボルの正確な名前が不明な場合、または複数のシンボルが同じ名前である場合、StartSymbolMatch は、指定したパターンに一致する名前のシンボルの検索を開始します。 構文の詳細については、「文字列ワイルドカードの構文」を参照してください。

シンボルの位置からその名前を調べるには、GetNameByOffset を使用します。 指定した位置の近くにあるモジュール内のシンボルの名前を調べるには、GetNearNamebyOffset を使用します。

可能な限り、シンボルをモジュール名で修飾します (mymodule!main など)。 そうしないと、シンボルが存在しない場合 (タイプミスなどのため)、エンジンはすべてのモジュールのシンボルを読み込んで検索する必要があります。これは、特にカーネル モードのデバッグで時間がかかるプロセスになることがあります。 シンボル名がモジュール名で修飾されている場合、エンジンはそのモジュールのシンボルを検索するだけで済みます。

シンボルは DEBUG_MODULE_AND_ID 構造体を使用して一意に識別されます。 この構造体は、GetSymbolEntriesByName および GetSymbolEntriesByOffset メソッドによって返されます。これらのメソッドは、それぞれ名前と位置に基づいてシンボルを検索します。

GetSymbolEntryInformation メソッドは、DEBUG_SYMBOL_ENTRY 構造体を使用してシンボルの説明を返します。

構造体内のフィールドのオフセットを調べるには、GetFieldOffset を使用します。 構造体内のインデックスを指定してフィールドの名前を調べるには、GetFieldName を使用します。 指定した値の列挙型定数の名前を調べるには、GetConstantName を使用します。

GetSymbolInformation メソッドを使用して、シンボルに関する情報を複数回要求できます。

シンボルのオプション

シンボルの読み込みやアンロードの方法は、いくつかのオプションにより制御します。 これらのオプションの説明については、「シンボル オプションの設定」を参照してください。

シンボル オプションは、AddSymbolOptions を使用してオンにでき、RemoveSymbolOptions を使用してオフにできます。

GetSymbolOptions は、現在のシンボル オプションを返します。 すべてのシンボル オプションを一度に設定するには、SetSymbolOptions を使用します。

シンボルの再読み込み

シンボル ファイルを読み込んだ後、エンジンはシンボル情報を内部キャッシュに保存します。 このキャッシュをフラッシュするには、Reload を使用します。 これらのシンボルは、今すぐか後で再び読み込む必要があります。

合成シンボル

合成シンボルは、参照しやすいように任意のアドレスにラベルを付ける方法です。 合成シンボルは、既存の任意のモジュールで作成できます。 AddSyntheticSymbol メソッドは、新しい合成シンボルを作成します。 合成シンボルは、RemoveSyntheticSymbol を使用して削除できます。 モジュールのシンボルを再読み込みすると、そのモジュールに関連付けられたすべての合成シンボルが削除されます。

シンボル パス

ディレクトリまたはシンボル サーバーをシンボル パスに追加するには、AppendSymbolPath メソッドを使用します。 シンボル パス全体は GetSymbolPath によって返され、SetSymbolPath を使用して変更できます。