分享方式:


ICorDebugVariableHome 介面

表示函式的區域變數或引數。

方法

方法 描述
GetArgumentIndex 方法 取得函式引數的索引。
GetCode 方法 取得包含此 ICorDebugVariableHome 物件的 "ICorDebugCode" 執行個體。
GetLiveRange 方法 取得此變數作用中的原生範圍。
GetLocationType 方法 取得變數原生位置的類型。
GetOffset 方法 從變數的基底暫存器取得位移。
GetRegister 方法 取得暫存器 (其中包含位置類型為 VLT_REGISTER 的變數) 和位置類型為 VLT_REGISTER_RELATIVE 的變數基地暫存器。
GetSlotIndex 方法 取得區域變數的 Managed 位置索引。

範例

下列程式碼片段使用名為 pCode4ICorDebugCode4 物件。

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;  
    }  
}  

規格需求

平台:請參閱系統需求

標頭:CorDebug.idl、CorDebug.h

程式庫:CorGuids.lib

.NET Framework版本:自 4.6.2 起可用

另請參閱