다음을 통해 공유


식 계산기 아키텍처

Visual Studio 디버그 패키지에 통합 하는 독자적인 언어 필요한 식 계산기 (EE) 인터페이스를 구현 하 고 호출 하는 공용 언어 런타임 기호 공급자 (SP) 및 바인더 인터페이스를 의미 합니다. SP 및 바인더 개체를 현재 실행 주소와 함께 식의 계산 컨텍스트는. 이러한 인터페이스를 생성 하 고 소비 하는 정보는 EE 아키텍처의 핵심 개념을 나타냅니다.

개요

식이 구문 분석

프로그램을 디버깅 하는 경우는 여러 가지 이유가 있지만 항상 (사용자가 배치한 중단점 또는 하나는 예외로 인해 발생 한)는 중단점에서 디버깅 중인 프로그램 중지 되었을 때 식이 계산 됩니다. 그 때 스택 프레임을 가져옵니다 Visual Studio이 순간에 의해 표시 됩니다 있는 IDebugStackFrame2 인터페이스에서 디버그 엔진 (DE). Visual Studio 호출 하 고 IDebugStackFrame2::GetExpressionContext 얻을 수 있는 IDebugExpressionContext2 인터페이스입니다. 이 인터페이스에서 식이 계산 될 수 있는 컨텍스트를 나타냅니다. IDebugExpressionContext2::ParseText평가 프로세스의 진입점이입니다. 이 시점까지 모든 인터페이스를 DE에서 구현 됩니다.

IDebugExpressionContext2::ParseText 입니다 라고 하는 DE EE 중단점이 발생 소스 파일의 언어와 관련 된 인스턴스화합니다 (DE의 수도 SH이 인스턴스화합니다). EE 표시 됩니다 있는 IDebugExpressionEvaluator 인터페이스입니다. 다음 호출 하는 DE IDebugExpressionEvaluator::Parse (텍스트 형식)의 식의 구문 분석 된 식을 변환 하려면 평가 위한 준비. 이 구문 분석 된 식을 나타내는 IDebugParsedExpression 인터페이스입니다. 식은 일반적으로 구문 분석 되어 여기에서 평가 됩니다.

DE를 구현 하는 개체를 만듭니다는 IDebugExpression2 인터페이스 설정의 IDebugParsedExpression 개체에 IDebugExpression2 개체를 반환 하 고는 IDebugExpression2 개체에서 IDebugExpressionContext2::ParseText.

식의 계산

Visual Studio 중 하나를 호출 IDebugExpression2::EvaluateSync 또는 IDebugExpression2::EvaluateAsync 구문 분석 된 식을 계산할 수 있습니다. 두이 방법 모두 호출 IDebugParsedExpression::EvaluateSync (IDebugExpression2::EvaluateSync 메서드를 호출 즉시 동안 IDebugExpression2::EvaluateAsync 메서드는 백그라운드 스레드를 통해 호출) 구문 분석 된 식을 평가 하는 IDebugProperty2 구문 분석 된 식의 종류와 값을 나타내는 인터페이스. IDebugParsedExpression::EvaluateSync제공 된 SH, 주소 및 바인더를 사용 하 여 구문 분석 된 식을 표시 하는 실제 값을 변환 하는 IDebugProperty2 인터페이스입니다.

예를 들어

실행 중인 프로그램에서 중단점에 도달 하면 사용자가 선택 하에서 변수를 볼 수 있는 간략 한 조사식 대화 상자. 이 대화 상자에는 변수 이름, 해당 값의 형식을 보여 줍니다. 사용자가 일반적으로 값을 변경할 수 있습니다.

경우는 간략 한 조사식 대화 상자가 표시 됩니다, 검사 되 고 변수 이름을 텍스트로 전달 됩니다 IDebugExpressionContext2::ParseText. 이 반환 된 IDebugExpression2 변수,이 경우에 구문 분석 된 식을 나타내는 개체입니다. IDebugExpression2::EvaluateSync만들기 위해 호출 되는 IDebugProperty2 의 이름 뿐만 아니라 변수 값 형식을 나타내는 개체입니다. 이 정보가 표시 되는 것.

사용자가 변수 값을 변경 하는 경우 IDebugProperty2::SetValueAsString 프로그램이 다시 시작 될 때 사용 되는 메모리의 변수 값을 변경 하는 새 값으로 호출 됩니다 실행 됩니다.

참조 하십시오 지역 변수를 표시합니다. 에 대 한 변수 값을 표시 하는이 프로세스에 대 한 자세한 내용은. 참조 하십시오 로컬의 값 변경 변수 값 변경 하는 방법에 대 한 자세한 내용은.

단원 내용

참고 항목

개념

로컬의 값 변경

기타 리소스

공용 언어 런타임에서 식 계산기를 작성

지역 변수를 표시합니다.