다음을 통해 공유


ICorDebugVariableHome 인터페이스

함수의 지역 변수 또는 인수를 나타냅니다.

메서드

메서드 설명
GetArgumentIndex 메서드 함수 인수의 인덱스 가져옵니다.
GetCode 메서드 ICorDebugVariableHome 개체가 포함된 "ICorDebugCode" instance 가져옵니다.
GetLiveRange 메서드 이 변수가 라이브 상태인 네이티브 범위를 가져옵니다.
GetLocationType 메서드 변수의 네이티브 위치 형식을 가져옵니다.
GetOffset 메서드 변수의 기본 레지스터에서 오프셋을 가져옵니다.
GetRegister 메서드 위치 형식이 인 변수와 위치 형식이 VLT_REGISTER인 변수의 기본 레지스터를 포함하는 레지스터를 VLT_REGISTER_RELATIVE가져옵니다.
GetSlotIndex 메서드 지역 변수의 관리되는 슬롯 인덱스 를 가져옵니다.

예제

다음 코드 조각에서는 라는 pCode4ICorDebugCode4 개체를 사용합니다.

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

요구 사항

플랫폼:시스템 요구 사항을 참조하세요.

헤더: CorDebug.idl, CorDebug.h

라이브러리: CorGuids.lib

.NET Framework 버전: 4.6.2부터 사용 가능

참고 항목