다음을 통해 공유


IDebugExpressionEvaluator

식 계산기를이 인터페이스를 나타냅니다.

IDebugExpressionEvaluator : IUnknown

구현자 참고 사항

식 계산기는이 인터페이스를 구현 해야 합니다.

호출자에 대 한 참고 사항

이 인터페이스를 구하려면 식 계산기를 인스턴스화하는 CoCreateInstance 메서드는 평가기의 클래스 ID (CLSID)를 사용 하 여. 이 예제를 참조 하십시오.

메서드에서 Vtable 순서

다음 표에서 메서드를 IDebugExpressionEvaluator.

메서드

설명

IDebugExpressionEvaluator::Parse

구문 분석 된 식에는 식 문자열을 변환합니다.

IDebugExpressionEvaluator::GetMethodProperty

지역 변수, 인수 및 기타 속성의 메서드를 가져옵니다.

IDebugExpressionEvaluator::GetMethodLocationProperty

메서드 위치와 오프셋 메모리 주소를 변환합니다.

IDebugExpressionEvaluator::SetLocale

인쇄할 수 있는 결과 만드는 데 사용할 언어를 결정 합니다.

IDebugExpressionEvaluator::SetRegistryRoot

레지스트리 루트를 설정합니다. 병렬 디버깅을 사용 합니다.

설명

일반적인 상황에서는 디버그 엔진 (DE) 식 계산기 (EE)에 대 한 호출의 결과로 인스턴스화할 IDebugExpressionContext2::ParseText. DE DE는 언어 및 사용 하려면 원하는 EE의 공급 업체를 알고 있으므로 EE의 CLSID 레지스트리에서 가져옵니다 (는 디버깅에 대 한 SDK 도우미 함수를 GetEEMetric에서이 검색에 도움이 됩니다).

EE 인스턴스화한 후 호출 하는 DE IDebugExpressionEvaluator::Parse 식을 구문 분석 하 고에 저장 하는 IDebugParsedExpression 개체입니다. 나중에 대 한 호출을 IDebugParsedExpression::EvaluateSync 계산 합니다.

요구 사항

헤더: ee.h

네임 스페이스: Microsoft.VisualStudio.Debugger.Interop

어셈블리: Microsoft.VisualStudio.Debugger.Interop.dll

예제

이 예제에서는 소스 코드에 지정 된 기호 공급자 및 주소 식 계산기를 인스턴스화하는 방법을 보여 줍니다. 이 예제 함수를 사용 하 여 GetEEMetric에서 디버깅에 대 한 SDK 도우미 라이브러리, dbgmetric.lib.

IDebugExpressionEvaluator GetExpressionEvaluator(IDebugSymbolProvider pSymbolProvider,
                                                 IDebugAddress *pSourceAddress)
{
    // This is typically defined globally but is specified here just
    // for this example.
    static const WCHAR strRegistrationRoot[] = L"Software\\Microsoft\\VisualStudio\\8.0Exp";

    IDebugExpressionEvaluator *pEE = NULL;
    if (pSymbolProvider != NULL && pSourceAddress != NULL) {
        HRESULT hr         = S_OK;
        GUID  languageGuid = { 0 };
        GUID  vendorGuid   = { 0 };

        hr = pSymbolProvider->GetLanguage(pSourceAddress,
                                          &languageGuid,
                                          &vendorGuid);
        if (SUCCEEDED(hr)) {
            CLSID clsidEE      = { 0 };
            CComPtr<IDebugExpressionEvaluator> spExpressionEvaluator;
            // Get the expression evaluator's CLSID from the registry.
            ::GetEEMetric(languageGuid,
                          vendorGuid,
                          metricCLSID,
                          &clsidEE,
                          strRegistrationRoot);
            if (!IsEqualGUID(clsidEE,GUID_NULL)) {
                // Instantiate the expression evaluator.
                spExpressionEvaluator.CoCreateInstance(clsidEE);
            }
            if (spExpressionEvaluator != NULL) {
                pEE = spExpressionEvaluator.Detach();
            }
        }
    }
    return pEE;
}

참고 항목

참조

IDebugExpressionContext2::ParseText

IDebugParsedExpression

IDebugParsedExpression::EvaluateSync

디버깅에 대 한 SDK 도우미

개념

식 평가 인터페이스