다음을 통해 공유


로컬 변수의 샘플 구현

중요하다

Visual Studio 2015에서는 식 계산기를 구현하는 이러한 방법이 더 이상 사용되지 않습니다. CLR 식 계산기 구현에 대한 자세한 내용은 CLR 식 계산기관리 식 계산기 샘플참조하세요.

다음은 Visual Studio가 EE(식 계산기)에서 메서드의 로컬을 가져오는 방법에 대한 개요입니다.

  1. Visual Studio는 디버그 엔진(DE) GetDebugProperty 호출하여 로컬을 포함하여 스택 프레임의 모든 속성을 나타내는 IDebugProperty2 개체를 가져옵니다.

  2. IDebugStackFrame2::GetDebugProperty GetMethodProperty 호출하여 중단점이 발생한 메서드를 설명하는 개체를 가져옵니다. DE는 기호 공급자(IDebugSymbolProvider), 주소(IDebugAddress) 및 바인더(IDebugBinder)를 제공합니다.

  3. IDebugExpressionEvaluator::GetMethodProperty 제공된 IDebugAddress 개체와 GetContainerField 호출하여 지정된 주소를 포함하는 메서드를 나타내는 IDebugContainerField 가져옵니다.

  4. IDebugContainerField 인터페이스는 IDebugMethodField 인터페이스에 대해 쿼리됩니다. 메서드의 로컬에 대한 액세스를 제공하는 인터페이스입니다.

  5. IDebugExpressionEvaluator::GetMethodProperty 메서드의 로컬을 나타내기 위해 IDebugProperty2 인터페이스를 실행하는 클래스(샘플에서 CFieldProperty 호출)를 인스턴스화합니다. IDebugMethodField 개체는 IDebugSymbolProvider, IDebugAddressIDebugBinder 개체와 함께 이 CFieldProperty 개체에 배치됩니다.

  6. CFieldProperty 개체가 초기화되면 IDebugMethodField 개체에서 GetInfo 호출되어 메서드 자체에 대한 표시 가능한 모든 정보가 포함된 FIELD_INFO 구조를 가져옵니다.

  7. IDebugExpressionEvaluator::GetMethodProperty CFieldProperty 개체를 IDebugProperty2 개체로 반환합니다.

  8. Visual Studio는 반환된 IDebugProperty2 개체에서 EnumChildren 호출하고, 필터 guidFilterLocalsPlusArgs메서드의 로컬이 포함된 IEnumDebugPropertyInfo2 개체를 반환합니다. 이 열거형은 EnumLocalsEnumArguments대한 호출로 채워집니다.

  9. Visual Studio는 Next 호출하여 각 로컬에 대한 DEBUG_PROPERTY_INFO 구조를 가져옵니다. 이 구조체는 로컬에 대한 IDebugProperty2 인터페이스에 대한 포인터를 포함합니다.

  10. Visual Studio는 각 로컬에 대해 getPropertyInfo 호출하여 로컬의 이름, 값 및 형식을 가져옵니다. 이 정보는 로컬 창에 표시됩니다.

이 섹션에서는

GetMethodProperty 구현GetMethodProperty의 구현에 대해 설명합니다.

로컬 변수를 열거하기 위한 디버그 엔진(DE) 호출 방법을 설명합니다.

로컬 속성 가져오기 DE가 하나 이상의 지역 주민의 이름, 형식 및 값을 가져오기 위해 호출하는 방법을 설명합니다.

로컬 값 가져오기 평가 컨텍스트에서 제공하는 바인더 개체의 서비스가 필요한 로컬 값을 가져오는 것에 대해 설명합니다.

지역 주민 평가 지역 주민 평가 방법을 설명합니다.

평가 컨텍스트 DE가 EE(식 계산기)를 호출할 때 전달되는 인수를 제공합니다.

MyCEE 샘플 MyC 언어에 대한 식 계산기를 만드는 한 가지 구현 방법을 보여 줍니다.

참고 항목