ICorDebugVariableHome 介面
表示函式的區域變數或引數。
方法
方法 | 描述 |
---|---|
GetArgumentIndex 方法 | 取得函式引數的索引。 |
GetCode 方法 | 取得包含此 ICorDebugVariableHome 物件的 "ICorDebugCode" 執行個體。 |
GetLiveRange 方法 | 取得此變數作用中的原生範圍。 |
GetLocationType 方法 | 取得變數原生位置的類型。 |
GetOffset 方法 | 從變數的基底暫存器取得位移。 |
GetRegister 方法 | 取得暫存器 (其中包含位置類型為 VLT_REGISTER 的變數) 和位置類型為 VLT_REGISTER_RELATIVE 的變數基地暫存器。 |
GetSlotIndex 方法 | 取得區域變數的 Managed 位置索引。 |
範例
下列程式碼片段使用名為 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(®ister);
// now we know which register it is in
break;
case VLT_REGISTER_RELATIVE:
CorDebugRegister baseRegister = 0;
LONG offset = 0;
locals[i].GetRegister(®ister);
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;
}
}
規格需求
平台:請參閱系統需求。
標頭:CorDebug.idl、CorDebug.h
程式庫:CorGuids.lib
.NET Framework版本:自 4.6.2 起可用