次の方法で共有


レジスター

デバッガー エンジンを使用して、ターゲットのレジスタを調べて変更できます。

ターゲットで使用可能なレジスタは、プロセッサ アーキテクチャによって異なります。 x86 プロセッサのレジスタの詳細については、「 プロセッサ アーキテクチャ」を参照してください。 プロセッサで使用可能なレジスタの詳細については、そのプロセッサのドキュメントを参照してください。

レジスタ セット

GetNumberRegisters メソッドを使用して、ターゲット上のレジスタの数を検索できます。

各レジスタはそのインデックスによって参照されます。 最初のレジスタのインデックスは 0 で、最後のレジスタのインデックスはレジスタの数から 1 を引いた値です。 名前が既知のレジスタのインデックスを検索するには、 GetIndexByName を使用します

GetDescription メソッドはレジスタに関する情報を返します。 これには、レジスタの名前、保持できる値の種類、サブ登録であるかどうかが含まれます。

サブ登録は、別のレジスタ内に含まれるレジスタです。 サブ登録が変更されると、それを含むレジスタも変更されます。 たとえば、x86 プロセッサでは、 ax サブレジスタは 32 ビット eax レジスタの下位 16 ビットと同じです。

次のメソッドを使用して値が見つかる可能性がある 3 つの特殊なレジスタがあります。 これらのレジスタの値の解釈はプラットフォームによって異なります。

レジスタの操作

レジスタの値は、 GetValue メソッドを使用して読み取ることができます。 GetValuesGetValues2 を使用して、複数のレジスタを読み取ることができます。

値は、 SetValue メソッドを使用してレジスタに書き込むことができます。 SetValuesSetValues2 を使用して、複数のレジスタを書き込むことができます。

レジスタに値を書き込むときに、指定された値の型がレジスタの型と異なる場合、値はレジスタの型に変換されます。 この変換は、 メソッド CoerceValue によって実行される変換と同じです。 レジスタの型が指定された値を保持できない場合、この変換によってデータが失われる可能性があります。

Pseudo-Registers

擬似レジスタ は、特定の値を保持するデバッガー エンジンによって保持される変数です。たとえば、 $teb は、値が現在のスレッドのスレッド環境ブロック (TEB) のアドレスである擬似レジスタの名前です。 詳細と擬似レジスタの一覧については、「 Pseudo-Register 構文」を参照してください。

各擬似レジスタにはインデックスがあります。 インデックスは、0 から擬似レジスタの数 ( GetNumberPseudoRegisters によって返されます) から 1 を引いた数値です。 擬似レジスタのインデックスを名前で検索するには、 GetPseudoIndexByName を使用します。 擬似レジスタの値は GetPseudoValues を使用して読み取ることができ、 値は SetPseudoValues を使用して擬似レジスタに書き込むことができます。 擬似レジスタの説明 (その型を含む) には、 GetPseudoDescription を使用します。

手記 すべての擬似レジスタが、すべてのデバッグ セッションまたは特定のセッションで常に使用できるわけではありません。

レジスタの表示

OutputRegisters メソッドと OutputRegisters2 メソッドは、ターゲットのレジスタを書式設定し、出力としてクライアントに送信します。

イベント

ターゲットのレジスタの値が変更されるたびに、エンジンはパラメーター Flags を DEBUG_CDS_REGISTERS に設定して IDebugEventCallbacks::ChangeDebuggeeState コールバック メソッドを呼び出します。