IDebugExpressionEvaluator
Importante
En Visual Studio 2015, esta forma de implementar evaluadores de expresiones está en desuso. Para obtener información sobre cómo implementar evaluadores de expresiones CLR, consulte ClR Expression Evaluadores y Ejemplo de evaluador de expresiones administradas.
Esta interfaz representa el evaluador de expresiones.
Sintaxis
IDebugExpressionEvaluator : IUnknown
Notas para los implementadores
El evaluador de expresiones debe implementar esta interfaz.
Notas para autores de la llamada
Para obtener esta interfaz, cree una instancia del evaluador de expresiones mediante el CoCreateInstance
método mediante el identificador de clase (CLSID) del evaluador. Vea el ejemplo.
Métodos en orden de Vtable
En la tabla siguiente se muestran los métodos de IDebugExpressionEvaluator
.
Método | Descripción |
---|---|
Parse | Convierte una cadena de expresión en una expresión analizada. |
GetMethodProperty | Obtiene las variables locales, los argumentos y otras propiedades de un método. |
GetMethodLocationProperty | Convierte una ubicación de método y un desplazamiento en una dirección de memoria. |
SetLocale | Determina qué idioma se va a usar para crear resultados imprimibles. |
SetRegistryRoot | Establece la raíz del Registro. Se usa para la depuración en paralelo. |
Comentarios
En una situación típica, el motor de depuración (DE) crea una instancia del evaluador de expresiones (EE) como resultado de una llamada a ParseText. Dado que el DE conoce el lenguaje y el proveedor de EE que quiere usar, el DE obtiene el CLSID de EE del Registro (la función auxiliares del SDK para depuración , GetEEMetric
, ayuda con esta recuperación).
Una vez creada la instancia de EE, el DE llama a Parse para analizar la expresión y almacenarla en un objeto IDebugParsedExpression . Más adelante, una llamada a EvaluateSync evalúa la expresión.
Requisitos
Encabezado: ee.h
Espacio de nombres: Microsoft.VisualStudio.Debugger.Interop
Ensamblado: Microsoft.VisualStudio.Debugger.Interop.dll
Ejemplo
En este ejemplo se muestra cómo crear instancias del evaluador de expresiones según un proveedor de símbolos y una dirección en el código fuente. En este ejemplo se usa una función , GetEEMetric
de los asistentes del SDK para la biblioteca de depuración , 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;
}