ICorDebugVariableHome 인터페이스
함수의 지역 변수 또는 인수를 나타냅니다.
메서드
메서드 | 설명 |
---|---|
GetArgumentIndex 메서드 | 함수 인수의 인덱스 가져옵니다. |
GetCode 메서드 | 이 ICorDebugVariableHome 개체가 포함된 "ICorDebugCode" instance 가져옵니다. |
GetLiveRange 메서드 | 이 변수가 라이브 상태인 네이티브 범위를 가져옵니다. |
GetLocationType 메서드 | 변수의 네이티브 위치 형식을 가져옵니다. |
GetOffset 메서드 | 변수의 기본 레지스터에서 오프셋을 가져옵니다. |
GetRegister 메서드 | 위치 형식이 인 변수와 위치 형식이 VLT_REGISTER 인 변수의 기본 레지스터를 포함하는 레지스터를 VLT_REGISTER_RELATIVE 가져옵니다. |
GetSlotIndex 메서드 | 지역 변수의 관리되는 슬롯 인덱스 를 가져옵니다. |
예제
다음 코드 조각에서는 라는 pCode4
ICorDebugCode4 개체를 사용합니다.
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에서 Microsoft와 공동 작업
이 콘텐츠의 원본은 GitHub에서 찾을 수 있으며, 여기서 문제와 끌어오기 요청을 만들고 검토할 수도 있습니다. 자세한 내용은 참여자 가이드를 참조하세요.
.NET