Partager via


ICorDebugVariableHome, interface

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

Méthodes

Méthode Descriptif
GetArgumentIndex, méthode Obtient l’index d’un argument de fonction.
GetCode, méthode Obtient l’instance « ICorDebugCode » qui contient cet ICorDebugVariableHome objet.
GetLiveRange, méthode Obtient la plage native sur 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 avec un type d’emplacement , et le registre de VLT_REGISTERbase pour une variable avec un type d’emplacement de VLT_REGISTER_RELATIVE.
GetSlotIndex, méthode Obtient l’index d’emplacement managé d’une variable locale.

Example

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;
    }
}

Spécifications

Plates-formes: Consultez les systèmes d’exploitation pris en charge par .NET.

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

Bibliothèque: CorGuids.lib

Versions de .NET : Disponible depuis .NET Framework 4.6.2

Voir aussi