Partager via


ICorDebugVariableHome, interface

Représente une variable ou un argument local d’une fonction.

Méthodes

Méthode Description
GetArgumentIndex, méthode Obtient l’index d’un argument de fonction.
GetCode, méthode Obtient l’instance de « ICorDebugCode » qui contient cet objet ICorDebugVariableHome.
GetLiveRange, méthode Obtient la plage native pour laquelle cette variable est active.
GetLocationType, méthode Obtient le type de l’emplacement natif de la variable.
GetOffset, méthode Obtient le décalage du registre de base pour une variable.
GetRegister, méthode Obtient le registre qui contient une variable ayant le type d’emplacement VLT_REGISTER ainsi que le registre de base d’une variable ayant le type d’emplacement VLT_REGISTER_RELATIVE.
GetSlotIndex, méthode Obtient l’index d’emplacement managé d’une variable locale.

Exemple

Le fragment de code suivant utilise l’objet ICorDebugCode4 nommé 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;  
    }  
}  

Configuration requise

Plateformes : Consultez Configuration requise.

En-tête : CorDebug.idl, CorDebug.h

Bibliothèque : CorGuids.lib

Versions de .NET Framework : Disponibles depuis la version 4.6.2

Voir aussi