IDebugExpressionEvaluator
식 계산기를이 인터페이스를 나타냅니다.
IDebugExpressionEvaluator : IUnknown
구현자 참고 사항
식 계산기는이 인터페이스를 구현 해야 합니다.
호출자에 대 한 참고 사항
이 인터페이스를 구하려면 식 계산기를 인스턴스화하는 CoCreateInstance 메서드는 평가기의 클래스 ID (CLSID)를 사용 하 여. 이 예제를 참조 하십시오.
메서드에서 Vtable 순서
다음 표에서 메서드를 IDebugExpressionEvaluator.
메서드 |
설명 |
---|---|
구문 분석 된 식에는 식 문자열을 변환합니다. |
|
지역 변수, 인수 및 기타 속성의 메서드를 가져옵니다. |
|
메서드 위치와 오프셋 메모리 주소를 변환합니다. |
|
인쇄할 수 있는 결과 만드는 데 사용할 언어를 결정 합니다. |
|
레지스트리 루트를 설정합니다. 병렬 디버깅을 사용 합니다. |
설명
일반적인 상황에서는 디버그 엔진 (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::EvaluateSync