다음을 통해 공유


ICorDebugVariableHome 인터페이스

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

메서드

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

Example

다음 코드 조각에서는 이름이 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;
    }
}

요구 사항

플랫폼:.NET 지원 운영 체제를 참조하세요.

머리글: CorDebug.idl, CorDebug.h

도서관: CorGuids.lib

.NET 버전: .NET Framework 4.6.2 이후 사용 가능

참고하십시오