중요합니다
Visual Studio 2015에서는 식 계산기를 구현하는 이러한 방법이 더 이상 사용되지 않습니다. CLR 식 계산기 구현에 대한 자세한 내용은 CLR 식 계산기 및 관리 식 계산기 샘플을 참조하세요.
독점 언어를 Visual Studio 디버그 패키지에 통합하면 필요한 EE(식 계산기) 인터페이스를 설정하고 SP(공용 언어 런타임 기호 공급자) 및 바인더 인터페이스를 호출해야 합니다. SP와 바인더 객체는 현재 실행 주소와 함께 식을 평가하는 데 사용되는 컨텍스트입니다. 이러한 인터페이스에서 생성하고 사용하는 정보는 EE 아키텍처의 주요 개념을 나타냅니다.
식 구문 분석
프로그램을 디버깅할 때는 여러 가지 이유로 식이 평가되지만 항상 디버그 중인 프로그램이 중단점(사용자가 배치한 중단점 또는 예외로 인해 발생한 중단점)에서 중지된 경우입니다. Visual Studio가 디버그 엔진(DE)에서 IDebugStackFrame2 인터페이스로 표현되는 스택 프레임을 가져오는 시점입니다. 그런 다음 Visual Studio 에서 GetExpressionContext 를 호출하여 IDebugExpressionContext2 인터페이스를 가져옵니다. 이 인터페이스는 식을 평가할 수 있는 컨텍스트를 나타냅니다. ParseText 는 평가 프로세스의 진입점입니다. 이 시점까지 모든 인터페이스는 DE에 의해 구현됩니다.
IDebugExpressionContext2::ParseText 호출되면 DE는 중단점이 발생한 소스 파일의 언어와 연결된 EE를 인스턴스화합니다(DE는 이 시점에서 SH도 인스턴스화). EE는 IDebugExpressionEvaluator 인터페이스로 표시됩니다. 그런 다음 DE는 Parse를 호출하여 식(텍스트 형식)을 구문 분석된 식으로 변환하여 평가할 준비를 합니다. 구문 분석된 이 식은 IDebugParsedExpression 인터페이스로 표시됩니다. 식은 일반적으로 구문 분석되며 이 시점에서 계산되지 않습니다.
DE는 IDebugExpression2 인터페이스를 구현하는 개체를 만들고, 그 개체를 IDebugParsedExpression 개체에 넣은 다음, IDebugExpression2 개체로부터 IDebugExpression2 개체를 반환합니다.
식 평가
Visual Studio는 EvaluateSync 또는 EvaluateAsync 를 호출하여 구문 분석된 식을 평가합니다. 이러한 두 메서드는 모두 EvaluateSync (IDebugExpression2::EvaluateSync 백그라운드 스레드를 통해 메서드를 호출하는 동안 IDebugExpression2::EvaluateAsync 메서드를 즉시 호출)를 호출하여 구문 분석된 식을 평가하고 구문 분석된 식의 값과 형식을 나타내는 IDebugProperty2 인터페이스를 반환합니다.
IDebugParsedExpression::EvaluateSync 는 제공된 SH, 주소 및 바인더를 사용하여 구문 분석된 식을 인터페이스가 나타내는 IDebugProperty2 실제 값으로 변환합니다.
예를 들면 다음과 같습니다.
실행 중인 프로그램에서 중단점이 적중되면 사용자는 QuickWatch 대화 상자에서 변수를 보도록 선택합니다. 이 대화 상자에는 변수의 이름, 해당 값 및 해당 형식이 표시됩니다. 사용자는 일반적으로 값을 변경할 수 있습니다.
빠른 조사식 대화 상자가 표시되면 검사 중인 변수의 이름이 ParseText에 텍스트로 전송됩니다. 구문 분석된 식(이 경우 변수)을 나타내는 IDebugExpression2 개체를 반환합니다.
그런 다음 EvaluateSync 를 호출하여 변수의 값 및 형식과 해당 이름을 나타내는 개체를 생성 IDebugProperty2 합니다. 이 정보가 표시됩니다.
사용자가 변수의 값을 변경하면 SetValueAsString 이 새 값으로 호출되어 메모리의 변수 값이 변경되므로 프로그램 실행을 다시 시작할 때 사용됩니다.
변수 값을 표시하는 이 프로세스에 대한 자세한 내용은 지역 표시를 참조하세요. 변수 의 값이 변경 되는 방법에 대한 자세한 내용은 로컬 값 변경을 참조하세요.
이 부분에서는
평가 컨텍스트 는 DE가 EE를 호출할 때 전달되는 인수를 제공합니다.
키 식 계산기 인터페이스는 평가 컨텍스트와 함께 EE를 작성할 때 필요한 중요한 인터페이스를 설명합니다.