다음을 통해 공유


감시 창 표현식 평가

중요합니다

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

실행이 일시 중지되면 Visual Studio는 DE(디버그 엔진)를 호출하여 조사식 목록에서 각 식의 현재 값을 확인합니다. DE는 EE(식 계산기)를 사용하여 각 식을 평가하고 Visual Studio는 조사식 창에 해당 값을 표시합니다.

다음은 감시 목록 표현식이 평가되는 방식에 대한 개요입니다.

  1. Visual Studio는 DE의 GetExpressionContext 를 호출하여 식을 평가하는 데 사용할 수 있는 식 컨텍스트를 가져옵니다.

  2. 조사식 목록에서 각 식에 대해 Visual Studio는 ParseText를 호출하여 식 텍스트를 구문 분석된 식으로 변환합니다.

  3. IDebugExpressionContext2::ParseText구문 분석을 호출하여 텍스트를 구문 분석하는 실제 작업을 수행하고 IDebugParsedExpression 개체를 생성합니다.

  4. IDebugExpressionContext2::ParseTextIDebugExpression2 객체를 생성하고, IDebugParsedExpression 객체를 그 안에 넣습니다. 그러면 이 IDebugExpression2 개체가 Visual Studio로 반환됩니다.

  5. Visual Studio는 EvaluateSync 를 호출하여 구문 분석된 식을 평가합니다.

  6. IDebugExpression2::EvaluateSyncEvaluateSync 호출을 전달하여 실제 평가를 수행하고 Visual Studio로 반환되는 IDebugProperty2 개체를 생성합니다.

  7. Visual Studio는 GetPropertyInfo를 호출하여 감시 목록에 표시되는 수식의 값을 가져옵니다.

구문 분석한 다음 평가

복합 식을 구문 분석하는 데 계산보다 훨씬 오래 걸릴 수 있으므로 식을 평가하는 프로세스는 1) 식을 구문 분석하고 2) 구문 분석된 식을 계산하는 두 단계로 나뉩니다. 이렇게 하면 계산이 여러 번 발생할 수 있지만 식을 한 번만 구문 분석해야 합니다. 중간 구문 분석 식은 IDebugParsedExpression 개체의 EE에서 반환되며, 이 개체는 다시 캡슐화되고 DE에서 IDebugExpression2 개체로 반환됩니다. IDebugExpression 개체는 IDebugParsedExpression 개체로 모든 평가를 연기합니다.

비고

Visual Studio에서 이를 가정하더라도 EE가 이 2단계 프로세스를 준수할 필요는 없습니다. EE는 EvaluateSync 를 호출할 때 같은 단계에서 구문 분석 및 평가할 수 있습니다(예: MyCEE 샘플이 작동하는 방식). 언어가 복잡한 식을 구성할 수 있는 경우 구문 분석 단계를 평가 단계에서 분리할 수 있습니다. 이렇게 하면 많은 조사식이 표시될 때 Visual Studio 디버거의 성능이 향상될 수 있습니다.

이 부분에서는

식 평가의 샘플 구현 에서는 MyCEE 샘플을 사용하여 식 평가 프로세스를 단계별로 실행합니다.

감시 식 평가는 식 구문 분석이 성공한 후 무엇이 발생하는지를 설명합니다.