Aracılığıyla paylaş


IDebugExpressionEvaluator

Önemli

Visual Studio 2015'te, ifade değerlendiricileri uygulama yöntemi kullanım dışıdır. CLR ifade değerlendiricilerini uygulama hakkında bilgi için bkz . CLR İfade Değerlendiricileri ve Yönetilen İfade Değerlendirici Örneği.

Bu arabirim, ifade değerlendiricisini temsil eder.

Sözdizimi

IDebugExpressionEvaluator : IUnknown

Uygulayıcılar için Notlar

İfade değerlendiricisinin bu arabirimi uygulaması gerekir.

Arayanlar İçin Notlar

Bu arabirimi elde etmek için, değerlendiricinin sınıf kimliğini (CLSID) kullanarak yöntemi aracılığıyla CoCreateInstance ifade değerlendiricisinin örneğini oluşturun. Bkz. Örnek.

Vtable Sırasına Göre Yöntemler

Aşağıdaki tabloda yönteminin yöntemleri gösterilmektedir IDebugExpressionEvaluator.

Metot Açıklama
Parse İfade dizesini ayrıştırılmış ifadeye dönüştürür.
GetMethodProperty Bir yöntemin yerel değişkenlerini, bağımsız değişkenlerini ve diğer özelliklerini alır.
GetMethodLocationProperty Yöntem konumunu ve uzaklığını bellek adresine dönüştürür.
SetLocale Yazdırılabilir sonuçlar oluşturmak için hangi dilin kullanılacağını belirler.
SetRegistryRoot Kayıt defteri kökünü ayarlar. Yan yana hata ayıklama için kullanılır.

Açıklamalar

Tipik bir durumda, hata ayıklama altyapısı (DE), ParseText çağrısının bir sonucu olarak ifade değerlendiricisini (EE) oluşturur. DE, kullanmak istediği EE'nin dilini ve satıcısını bildiği için DE, EE'nin CLSID'sini kayıt defterinden alır ( Hata Ayıklama işlevi için SDK Yardımcıları, GetEEMetricbu alma işlemine yardımcı olur).

EE örneği yüklendikten sonra DE, ifadeyi ayrıştırmak ve bir IDebugParsedExpression nesnesinde depolamak için Ayrıştır'ı çağırır. Daha sonra EvaluateSync çağrısı ifadeyi değerlendirir.

Gereksinimler

Üst bilgi: ee.h

Ad Alanı: Microsoft.VisualStudio.Debugger.Interop

Derleme: Microsoft.VisualStudio.Debugger.Interop.dll

Örnek

Bu örnekte, bir sembol sağlayıcısı ve kaynak kodunda bir adres verilip ifade değerlendiricisinin nasıl örneklendirileceğini gösterir. Bu örnekte, GetEEMetricdbgmetric.lib Hata Ayıklama kitaplığı için SDK Yardımcıları'ndan bir işlevi kullanılır.

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;
}

Ayrıca bkz.