Interfaccia ICorDebugVariableHome
Rappresenta una variabile locale o un argomento di una funzione.
Metodi
Metodo | Descrizione |
---|---|
Metodo GetArgumentIndex | Ottiene l'indice di un argomento di funzione. |
Metodo GetCode | Ottiene l'istanza "ICorDebugCode" che contiene questo ICorDebugVariableHome oggetto. |
Metodo GetLiveRange | Ottiene l'intervallo nativo su cui questa variabile è attiva. |
Metodo GetLocationType | Ottiene il tipo della posizione nativa della variabile. |
Metodo GetOffset | Ottiene l'offset dal registro di base per una variabile. |
Metodo GetRegister | Ottiene il registro che contiene una variabile con un tipo di posizione di VLT_REGISTER e il registro di base per una variabile con un tipo di posizione di VLT_REGISTER_RELATIVE . |
Metodo GetSlotIndex | Ottiene l'indice dello slot gestito di una variabile locale. |
Esempio
Il frammento di codice seguente usa l'oggetto ICorDebugCode4 denominato 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;
}
}
Requisiti
Piattaforme: vedere Requisiti di sistema di .NET Framework.
Intestazione: CorDebug.idl, CorDebug.h
Libreria: CorGuids.lib
Versioni di .NET Framework: Disponibile da 4.6.2
Vedi anche
Collabora con noi su GitHub
L'origine di questo contenuto è disponibile in GitHub, in cui è anche possibile creare ed esaminare i problemi e le richieste pull. Per ulteriori informazioni, vedere la guida per i collaboratori.