중요합니다
Visual Studio 2015에서는 식 계산기를 구현하는 이러한 방법이 더 이상 사용되지 않습니다. CLR 식 계산기 구현에 대한 자세한 내용은 CLR 식 계산기 및 관리 식 계산기 샘플을 참조하세요.
실행이 일시 중지되면 Visual Studio는 DE(디버그 엔진)를 호출하여 조사식 목록에서 각 식의 현재 값을 확인합니다. DE는 EE(식 계산기)를 사용하여 각 식을 평가하고 Visual Studio는 조사식 창에 해당 값을 표시합니다.
다음은 감시 목록 표현식이 평가되는 방식에 대한 개요입니다.
Visual Studio는 DE의 GetExpressionContext 를 호출하여 식을 평가하는 데 사용할 수 있는 식 컨텍스트를 가져옵니다.
조사식 목록에서 각 식에 대해 Visual Studio는 ParseText를 호출하여 식 텍스트를 구문 분석된 식으로 변환합니다.
IDebugExpressionContext2::ParseText는 구문 분석을 호출하여 텍스트를 구문 분석하는 실제 작업을 수행하고 IDebugParsedExpression 개체를 생성합니다.IDebugExpressionContext2::ParseText는 IDebugExpression2 객체를 생성하고,IDebugParsedExpression객체를 그 안에 넣습니다. 그러면 이IDebugExpression2개체가 Visual Studio로 반환됩니다.Visual Studio는 EvaluateSync 를 호출하여 구문 분석된 식을 평가합니다.
IDebugExpression2::EvaluateSync는 EvaluateSync 호출을 전달하여 실제 평가를 수행하고 Visual Studio로 반환되는 IDebugProperty2 개체를 생성합니다.Visual Studio는 GetPropertyInfo를 호출하여 감시 목록에 표시되는 수식의 값을 가져옵니다.
구문 분석한 다음 평가
복합 식을 구문 분석하는 데 계산보다 훨씬 오래 걸릴 수 있으므로 식을 평가하는 프로세스는 1) 식을 구문 분석하고 2) 구문 분석된 식을 계산하는 두 단계로 나뉩니다. 이렇게 하면 계산이 여러 번 발생할 수 있지만 식을 한 번만 구문 분석해야 합니다. 중간 구문 분석 식은 IDebugParsedExpression 개체의 EE에서 반환되며, 이 개체는 다시 캡슐화되고 DE에서 IDebugExpression2 개체로 반환됩니다.
IDebugExpression 개체는 IDebugParsedExpression 개체로 모든 평가를 연기합니다.
비고
Visual Studio에서 이를 가정하더라도 EE가 이 2단계 프로세스를 준수할 필요는 없습니다. EE는 EvaluateSync 를 호출할 때 같은 단계에서 구문 분석 및 평가할 수 있습니다(예: MyCEE 샘플이 작동하는 방식). 언어가 복잡한 식을 구성할 수 있는 경우 구문 분석 단계를 평가 단계에서 분리할 수 있습니다. 이렇게 하면 많은 조사식이 표시될 때 Visual Studio 디버거의 성능이 향상될 수 있습니다.
이 부분에서는
식 평가의 샘플 구현 에서는 MyCEE 샘플을 사용하여 식 평가 프로세스를 단계별로 실행합니다.
감시 식 평가는 식 구문 분석이 성공한 후 무엇이 발생하는지를 설명합니다.
관련 콘텐츠
평가 컨텍스트 는 DE(디버그 엔진)가 EE(식 계산기)를 호출할 때 전달되는 인수를 제공합니다.