Freigeben über


ICorDebugVariableHome-Schnittstelle

Stellt eine lokale Variable oder ein Argument einer Funktion dar.

Methodik

Methode Description
GetArgumentIndex-Methode Ruft den Index eines Funktionsarguments ab.
GetCode-Methode Ruft die "ICorDebugCode"-Instanz ab, die dieses ICorDebugVariableHome Objekt enthält.
GetLiveRange-Methode Ruft den nativen Bereich ab, über den diese Variable live ist.
GetLocationType-Methode Ruft den Typ des systemeigenen Speicherorts der Variablen ab.
GetOffset-Methode Ruft den Offset aus dem Basisregister für eine Variable ab.
GetRegister-Methode Ruft das Register ab, das eine Variable mit einem Speicherorttyp VLT_REGISTERenthält, und das Basisregister für eine Variable mit einem Speicherorttyp von VLT_REGISTER_RELATIVE.
GetSlotIndex-Methode Ruft den verwalteten Slotindex einer lokalen Variablen ab.

Example

Das folgende Codefragment verwendet das ICorDebugCode4 -Objekt mit dem Namen 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(&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;
    }
}

Anforderungen

Plattformen: Siehe .NET unterstützte Betriebssysteme.

Kopfball: CorDebug.idl, CorDebug.h

Bibliothek: CorGuids.lib

.NET-Versionen: Verfügbar seit .NET Framework 4.6.2

Siehe auch