Интерфейс ICorDebugVariableHome
Представляет локальную переменную или аргумент функции.
Методы
Метод | Описание |
---|---|
Метод GetArgumentIndex | Возвращает индекс аргумента функции. |
Метод GetCode | Возвращает экземпляр ICorDebugCode, содержащий этот ICorDebugVariableHome объект. |
Метод GetLiveRange | Возвращает собственный диапазон, в котором находится эта переменная. |
Метод GetLocationType | Возвращает тип собственного расположения переменной. |
Метод GetOffset | Возвращает смещение от базового регистра для переменной. |
Метод GetRegister | Возвращает регистр, содержащий переменную с типом VLT_REGISTER расположения , и базовый регистр для переменной с типом VLT_REGISTER_RELATIVE расположения . |
Метод GetSlotIndex | Возвращает управляемый индекс слота локальной переменной. |
Пример
В следующем фрагменте кода используется объект 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(®ister);
// now we know which register it is in
break;
case VLT_REGISTER_RELATIVE:
CorDebugRegister baseRegister = 0;
LONG offset = 0;
locals[i].GetRegister(®ister);
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;
}
}
Требования
Платформы: см. раздел Требования к системе.
Заголовок: CorDebug.idl, CorDebug.h
Библиотека: CorGuids.lib
версии платформа .NET Framework: доступно с версии 4.6.2.
См. также раздел
GitHub сайтында бізбен бірлесіп жұмыс істеу
Бұл мазмұнның көзін GitHub сайтында табуға болады. Онда сонымен бірге мәселелер мен өзгертулерді енгізу сұрауларын жасауға және қарап шығуға болады. Қосымша ақпарат алу үшін қатысушы нұсқаулығын қараңыз.