IDebugExpressionEvaluator
Diese Schnittstelle stellt die Ausdrucksauswertung dar.
IDebugExpressionEvaluator : IUnknown
Hinweise für Implementierer
Die Ausdrucksauswertung muss diese Schnittstelle implementieren.
Hinweise für Aufrufer
Um diese Schnittstelle zu erhalten, instanziieren Sie den von der Ausdrucksauswertung CoCreateInstance-Methode, indem Sie die Klassen-ID (CLSID) mit einem Auswertungsdelegaten verwenden. Weitere Informationen finden Sie im Beispiel.
Methoden in die Vtable-Reihenfolge
In der folgenden Tabelle werden die Methoden von IDebugExpressionEvaluatoran.
Methode |
Beschreibung |
---|---|
Konvertiert eine Ausdruckszeichenfolge in ein analysierten Ausdruck. |
|
Ruft die lokalen Variablen, Argumente und andere Eigenschaften einer Methode ab. |
|
Konvertiert einen Speicherort für Methoden und der Offset in eine Speicheradresse. |
|
Bestimmt, das zum Erstellen von druckbaren Ergebnisse zu verwendende Sprache. |
|
Legt den Registrierungsstamm fest. Wird für paralleles Debuggen. |
Hinweise
In einer typischen Fall instanziiert das Debugmodul (DE) den Ausdrucksauswertung (EE aufgrund eines Aufrufs von IDebugExpressionContext2::ParseText). Da DE weiß, dass die Sprache und der Anbieter der EE, die sie verwenden möchte, ruft die CLSID der DE EE aus der Registrierung ab ,die SDK-Hilfen für das Debuggen-Funktion, GetEEMetric, die mit dem Abruf).
Nachdem die EE instanziiert wurde, ruft DE IDebugExpressionEvaluator::Analyse an, um den Ausdruck zu analysieren und in ein IDebugParsedExpression-Objekt gespeichert werden. Später wird ein Aufruf IDebugParsedExpression::EvaluateSync den Ausdruck aus.
Anforderungen
Header: ee.h
Namespace: Microsoft.VisualStudio.Debugger.Interop
Assembly: Microsoft.VisualStudio.Debugger.Interop.dll
Beispiel
Dieses Beispiel zeigt, wie der angegebenen Ausdrucksauswertung ein Symbol und eine Adresse im Quellcode instanziiert. In diesem Beispiel wird eine Funktion, GetEEMetric, aus der SDK-Hilfen für das Debuggen Bibliothek, 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;
}
Siehe auch
Referenz
IDebugExpressionContext2::ParseText
IDebugParsedExpression::EvaluateSync