Compartir a través de


ICorDebugVariableHome (interfaz)

Representa una variable local o un argumento de una función.

Methods

Método Description
GetArgumentIndex (método) Obtiene el índice de un argumento de función.
GetCode (método) Obtiene la instancia "ICorDebugCode" que contiene este ICorDebugVariableHome objeto.
GetLiveRange (método) Obtiene el intervalo nativo en el que esta variable está activa.
GetLocationType (método) Obtiene el tipo de la ubicación nativa de la variable.
GetOffset (método) Obtiene el desplazamiento del registro base de una variable.
GetRegister (método) Obtiene el registro que contiene una variable con un tipo de ubicación de VLT_REGISTERy el registro base de una variable con un tipo de ubicación de VLT_REGISTER_RELATIVE.
GetSlotIndex (método) Obtiene el índice de ranura administrada de una variable local.

Example

El fragmento de código siguiente usa el objeto ICorDebugCode4 denominado 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;
    }
}

Requisitos

Plataformas: Consulte Sistemas operativos compatibles con .NET.

Encabezado: CorDebug.idl, CorDebug.h

Biblioteca: CorGuids.lib

Versiones de .NET: Disponible desde .NET Framework 4.6.2

Consulte también