ICorDebugVariableHome-gränssnitt
Representerar en lokal variabel eller ett argument för en funktion.
Metoder
Metod | Beskrivning |
---|---|
GetArgumentIndex-metod | Hämtar indexet för ett funktionsargument. |
GetCode-metod | Hämtar instansen "ICorDebugCode" som innehåller det här ICorDebugVariableHome objektet. |
GetLiveRange-metod | Hämtar det interna intervallet som variabeln är live för. |
GetLocationType-metod | Hämtar typen av variabelns interna plats. |
GetOffset-metod | Hämtar förskjutningen från basregistret för en variabel. |
GetRegister-metod | Hämtar registret som innehåller en variabel med platstypen VLT_REGISTER , och basregistret för en variabel med platstypen VLT_REGISTER_RELATIVE . |
GetSlotIndex-metod | Hämtar det hanterade fackindexet för en lokal variabel. |
Exempel
Följande kodfragment använder ICorDebugCode4-objektet med namnet pCode4
.
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;
}
}
Krav
Plattformar: Se Systemkrav.
Huvudet: CorDebug.idl, CorDebug.h
Bibliotek: CorGuids.lib
.NET Framework versioner: Tillgänglig sedan 4.6.2
Se även
Samarbeta med oss på GitHub
Källan för det här innehållet finns på GitHub, där du även kan skapa och granska ärenden och pull-begäranden. Se vår deltagarguide för mer information.