IDebugExpressionEvaluator
Ważne
W programie Visual Studio 2015 ten sposób implementowania ewaluatorów wyrażeń jest przestarzały. Aby uzyskać informacje na temat implementowania ewaluatorów wyrażeń CLR, zobacz CLR Expression Evaluators and Managed Expression Evaluator Sample (Ewaluator wyrażeń zarządzanych).
Ten interfejs reprezentuje ewaluatora wyrażeń.
Składnia
IDebugExpressionEvaluator : IUnknown
Uwagi dotyczące implementacji
Ewaluator wyrażeń musi zaimplementować ten interfejs.
Uwagi dotyczące wywoływania
Aby uzyskać ten interfejs, utwórz wystąpienie ewaluatora wyrażeń za pomocą CoCreateInstance
metody przy użyciu identyfikatora klasy (CLSID) ewaluatora. Zobacz przykład.
Metody w tabeli Vtable Order
W poniższej tabeli przedstawiono metody .IDebugExpressionEvaluator
Metoda | opis |
---|---|
Analizuj | Konwertuje ciąg wyrażenia na wyrażenie przeanalizowane. |
GetMethodProperty | Pobiera zmienne lokalne, argumenty i inne właściwości metody. |
GetMethodLocationProperty | Konwertuje lokalizację metody i przesunięcie na adres pamięci. |
SetLocale | Określa język używany do tworzenia wyników drukowalnych. |
SetRegistryRoot | Ustawia katalog główny rejestru. Służy do debugowania równoległego. |
Uwagi
W typowej sytuacji aparat debugowania tworzy wystąpienie ewaluatora wyrażeń (EE) w wyniku wywołania metody ParseText. Ponieważ de zna język i dostawcę EE, którego chce użyć, de pobiera identyfikator CLSID EE z rejestru ( pomocnicy zestawu SDK do debugowania funkcji GetEEMetric
, pomaga w tym pobieraniu).
Po utworzeniu wystąpienia EE de wywołuje metodę Parse , aby przeanalizować wyrażenie i zapisać je w obiekcie IDebugParsedExpression . Później wywołanie funkcji EvaluateSync oblicza wyrażenie.
Wymagania
Nagłówek: ee.h
Przestrzeń nazw: Microsoft.VisualStudio.Debugger.Interop
Zestaw: Microsoft.VisualStudio.Debugger.Interop.dll
Przykład
W tym przykładzie pokazano, jak utworzyć wystąpienie ewaluatora wyrażeń przy użyciu dostawcy symboli i adresu w kodzie źródłowym. W tym przykładzie użyto funkcji GetEEMetric
, z pomocników zestawu SDK dla biblioteki debugowania 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;
}