次の方法で共有


ICorDebugVariableHome インターフェイス

関数のローカル変数または引数を表します。

Methods

メソッド Description
GetArgumentIndex メソッド 関数引数のインデックスを取得します。
GetCode メソッド この ICorDebugVariableHome オブジェクトを含む "ICorDebugCode" インスタンスを取得します。
GetLiveRange メソッド この変数がライブであるネイティブ範囲を取得します。
GetLocationType メソッド 変数のネイティブ位置の型を取得します。
GetOffset メソッド 変数のベース レジスタからのオフセットを取得します。
GetRegister メソッド VLT_REGISTERの場所の型を持つ変数と、VLT_REGISTER_RELATIVEの場所の型を持つ変数の基本レジスタを含むレジスタを取得します。
GetSlotIndex メソッド ローカル変数のマネージド スロット インデックスを取得します。

Example

次のコード フラグメントでは、pCode4という名前の ICorDebugCode4 オブジェクトを使用します。

ICorDebugCode4 *pCode4 = NULL;
pCode->QueryInterface(IID_ICorDebugCode4, &pCode4);

ICorDebugVariableEnum *pVarLocEnum = NULL;
pCode4->EnumerateVariableHomes(&pVarLocEnum);

// retrieve local variables and arguments
ULONG celt = 0;
pVarLocEnum->GetCount(&celt);
ICorDebugVariableHome **homes = new ICorDebugVariableHome *[celt];
ULONG celtFetched = 0;
pVarLocEnum->Next(celt, homes, &celtFetched);

for (int i = 0; i < celtFetched; i++)
{
    VariableLocationType locType = VLT_INVALID;
    homes[i].GetLocationType(&locType);
    switch (locType)
    {
    case VLT_REGISTER:
        CorDebugRegister register = 0;
        locals[i].GetRegister(&register);
        // now we know which register it is in
        break;
    case VLT_REGISTER_RELATIVE:
        CorDebugRegister baseRegister = 0;
        LONG offset = 0;
        locals[i].GetRegister(&register);
        locals[i].GetOffset(&offset);
        // now we know the register-relative offset
        break;
    case VLT_INVALID:
        // handle case where we can't access the location
        break;
    }
}

Requirements

プラットフォーム:サポートされている .NET オペレーティング システムを参照してください。

ヘッダ: CorDebug.idl、CorDebug.h

図書館: CorGuids.lib

.NET のバージョン: .NET Framework 4.6.2 以降で利用可能

こちらも参照ください