Поделиться через


Интерфейс ICorDebugVariableHome

Представляет локальную переменную или аргумент функции.

Методы

Метод Description
Метод GetArgumentIndex Возвращает индекс аргумента функции.
Метод GetCode Возвращает экземпляр ICorDebugCode, содержащий этот ICorDebugVariableHome объект.
Метод GetLiveRange Получает собственный диапазон, над которым находится эта переменная.
Метод GetLocationType Возвращает тип собственного расположения переменной.
Метод GetOffset Возвращает смещение из базового регистра для переменной.
Метод GetRegister Возвращает регистр, содержащий переменную с типом VLT_REGISTERрасположения, и базовый регистр для переменной с типом VLT_REGISTER_RELATIVEрасположения.
Метод GetSlotIndex Возвращает управляемый индекс слота локальной переменной.

Example

В следующем фрагменте кода используется объект ICorDebugCode4 с именем 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;
    }
}

Требования

Платформ: См. сведения о поддерживаемых операционных системах .NET.

Заголовок: CorDebug.idl, CorDebug.h

Библиотека: CorGuids.lib

Версии .NET: Доступно с версии .NET Framework 4.6.2

См. также