Compartilhar via


ICorDebugVariableHome Interface

Representa uma variável local ou argumento de uma função.

Methods

Método Description
Método GetArgumentIndex Obtém o índice de um argumento de função.
Método GetCode Obtém a instância "ICorDebugCode" que contém esse ICorDebugVariableHome objeto.
Método GetLiveRange Obtém o intervalo nativo sobre o qual essa variável está ativa.
Método GetLocationType Obtém o tipo do local nativo da variável.
Método GetOffset Obtém o deslocamento do registro base para uma variável.
Método GetRegister Obtém o registro que contém uma variável com um tipo de VLT_REGISTERlocal e o registro base de uma variável com um tipo de localização.VLT_REGISTER_RELATIVE
Método GetSlotIndex Obtém o índice de slot gerenciado de uma variável local.

Example

O fragmento de código a seguir usa o objeto ICorDebugCode4 chamado 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;
    }
}

Requirements

Plataformas: Consulte sistemas operacionais com suporte do .NET.

Cabeçalho: CorDebug.idl, CorDebug.h

Biblioteca: CorGuids.lib

Versões do .NET: Disponível desde o .NET Framework 4.6.2

Consulte também