ICorDebugVariableHome-Schnittstelle
Stellt eine lokale Variable oder ein Argument einer Funktion dar.
Methoden
Methode | BESCHREIBUNG |
---|---|
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, in dem diese Variable gültig ist. |
GetLocationType-Methode | Ruft den Typ der nativen Position der Variablen ab. |
GetOffset-Methode | Ruft den Offset aus dem Basisregister für eine Variable ab. |
GetRegister-Methode | Ruft das Register, das eine Variable mit dem Positionstyp VLT_REGISTER enthält, sowie das Basisregister für eine Variable mit dem Positionstyp VLT_REGISTER_RELATIVE ab. |
GetSlotIndex-Methode | Ruft den verwalteten Slotindex einer lokalen Variablen ab. |
Beispiel
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(®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;
}
}
Anforderungen
Plattformen: Informationen finden Sie unter Systemanforderungen.
Header: CorDebug.idl, CorDebug.h
Bibliothek: CorGuids.lib
.NET Framework-Versionen: Seit Version 4.6.2 verfügbar
Siehe auch
Zusammenarbeit auf GitHub
Die Quelle für diesen Inhalt finden Sie auf GitHub, wo Sie auch Issues und Pull Requests erstellen und überprüfen können. Weitere Informationen finden Sie in unserem Leitfaden für Mitwirkende.