Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Importante
No Visual Studio 2015, essa maneira de implementar avaliadores de expressão foi preterida. Para obter informações sobre como implementar avaliadores de expressão CLR, consulte Avaliadores de expressão CLR e Amostra de avaliador de expressão gerenciada.
Essa interface representa o avaliador da expressão.
Sintaxe
IDebugExpressionEvaluator : IUnknown
Notas para implementadores
O avaliador de expressão deve implementar essa interface.
Observações para chamadores
Para obter essa interface, instancie o avaliador de expressão por meio do CoCreateInstance método usando o ID de classe (CLSID) do avaliador. Veja o exemplo.
Métodos na ordem VTable
A tabela a seguir mostra os métodos de IDebugExpressionEvaluator.
| Método | Descrição |
|---|---|
| Analisar | Converte uma cadeia de caracteres de expressão em uma expressão analisada. |
| GetMethodProperty | Obtém as variáveis locais, argumentos e outras propriedades de um método. |
| GetMethodLocationProperty | Converte um local de método e deslocamento em um endereço de memória. |
| SetLocale | Determina qual idioma usar para criar resultados imprimíveis. |
| SetRegistryRoot | Define a raiz do Registro. Usado para depuração lado a lado. |
Comentários
Em uma situação típica, o mecanismo de depuração (DE) instancia o avaliador de expressão (EE) como resultado de uma chamada para ParseText. Como o DE conhece o idioma e o fornecedor do EE que deseja usar, o DE obtém o CLSID do EE do registro (a função SDK Helpers for Debugging , , GetEEMetricajuda nessa recuperação).
Depois que o EE é instanciado, o DE chama Parse para analisar a expressão e armazená-la em um objeto IDebugParsedExpression. Posteriormente, uma chamada para EvaluateSync avalia a expressão.
Requisitos
Cabeçalho: ee.h
Espaço para nome: Microsoft.VisualStudio.Debugger.Interop
Assembly: Microsoft.VisualStudio.Debugger.Interop.dll
Exemplo
Este exemplo mostra como instanciar o avaliador de expressão dado um provedor de símbolo e um endereço no código-fonte. Este exemplo usa uma função, , da biblioteca SDK Helpers for Debugging, GetEEMetricdbgmetric.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;
}