IDebugExpressionEvaluator
Wichtig
Seit Visual Studio 2015 ist diese Art der Implementierung von Ausdrucksauswertungen veraltet. Informationen zum Implementieren von CLR-Ausdrucksauswertern finden Sie unter CLR Expression Evaluators and Managed Expression Evaluator Sample.For information about implementing CLR expression evaluators, please see CLR Expression Evaluator Sample.
Diese Schnittstelle stellt den Ausdrucksauswerter dar.
Syntax
IDebugExpressionEvaluator : IUnknown
Hinweise für Implementierer
Der Ausdrucksauswerter muss diese Schnittstelle implementieren.
Hinweise für Aufrufer
Um diese Schnittstelle abzurufen, instanziieren Sie den Ausdrucksauswert über die CoCreateInstance
Methode mithilfe der Klassen-ID (CLSID) des Evaluators. Sehen Sie sich das Beispiel an.
Methoden in Vtable-Reihenfolge
In der folgenden Tabelle sind die Methoden von IDebugExpressionEvaluator
aufgeführt.
Methode | Beschreibung |
---|---|
Parse | Konvertiert eine Ausdruckszeichenfolge in einen analysierten Ausdruck. |
GetMethodProperty | Ruft die lokalen Variablen, Argumente und andere Eigenschaften einer Methode ab. |
GetMethodLocationProperty | Wandelt einen Methodenspeicherort und einen Offset in eine Speicheradresse um. |
SetLocale | Bestimmt, welche Sprache zum Erstellen druckbarer Ergebnisse verwendet werden soll. |
SetRegistryRoot | Legt den Registrierungsstamm fest. Wird für das parallele Debuggen verwendet. |
Hinweise
In einer typischen Situation instanziiert das Debugmodul (DE) den Ausdruck evaluator (EE) als Ergebnis eines Aufrufs von ParseText. Da die DE die Sprache und den Anbieter des EE kennt, den sie verwenden möchte, ruft die DE die CLSID des EE aus der Registrierung ab (die SDK-Hilfsprogramme für debugging-Funktion , GetEEMetric
hilft bei diesem Abruf).
Nachdem der EE instanziiert wurde, ruft die DE Parse auf, um den Ausdruck zu analysieren und in einem IDebugParsedExpression -Objekt zu speichern. Später wertet ein Aufruf von EvaluateSync den Ausdruck aus.
Anforderungen
Kopfzeile: ee.h
Namespace: Microsoft.VisualStudio.Debugger.Interop
Assembly: Microsoft.VisualStudio.Debugger.Interop.dll
Beispiel
In diesem Beispiel wird gezeigt, wie der Ausdrucksauswerter anhand eines Symbolanbieters und einer Adresse im Quellcode instanziieren kann. In diesem Beispiel wird eine Funktion aus GetEEMetric
der SDK-Hilfsprogramm für debugging-Bibliothek dbgmetric.lib verwendet.
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;
}