Aracılığıyla paylaş


İfade değerlendirme mimarisi

Ö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 ifade değerlendiricileri ve Yönetilen ifade değerlendirici örneği.

Özel bir dili Visual Studio hata ayıklama paketiyle tümleştirmek, gerekli ifade değerlendirici (EE) arabirimlerini ayarlamanız ve ortak dil çalışma zamanı sembol sağlayıcısını (SP) ve bağlayıcı arabirimlerini çağırmanız gerektiği anlamına gelir. SP ve bağlayıcı nesneleri, ifadelerin değerlendirildiği bağlamı oluşturur ve bu bağlam, geçerli yürütme adresiyle birlikte ele alınır. Bu arabirimlerin ürettiği ve tükettiği bilgiler, EE mimarisindeki temel kavramları temsil eder.

İfadeyi Ayrıştırma

Bir programda hata ayıklarken, ifadeler çeşitli nedenlerle değerlendirilir, ancak her zaman hata ayıklama esnasında program bir kesme noktasında durdurulduğunda (bu nokta kullanıcı tarafından yerleştirilmiş bir kesme noktası veya bir istisna tarafından tetiklenmiş olabilir). Visual Studio şu anda hata ayıklama altyapısından (DE) IDebugStackFrame2 arabirimi tarafından temsil edilen bir yığın çerçevesi alır. Visual Studio daha sonra IDebugExpressionContext2 arabirimini almak için GetExpressionContext'i çağırır. Bu arabirim, ifadelerin değerlendirilebileceği bir bağlamı temsil eder; ParseText , değerlendirme işleminin giriş noktasıdır. Bu noktaya kadar tüm arabirimler DE tarafından uygulanır.

Kaynak dosyada kesme noktası oluştuğunda IDebugExpressionContext2::ParseText çağrıldığında, DE, dosyanın diliyle ilişkili EE örneğini başlatır (DE ayrıca bu noktada SH'yi de başlatır). EE, IDebugExpressionEvaluator arabirimiyle temsil edilir. ARDıNDAN DE, ifadeyi (metin biçiminde) değerlendirmeye hazır ayrıştırılmış bir ifadeye dönüştürmek için Ayrıştır'ı çağırır. Bu ayrıştırılmış ifade IDebugParsedExpression arabirimiyle temsil edilir. İfade genellikle ayrıştırılır ve bu noktada değerlendirilmez.

DE, IDebugExpression2 arabirimini gerçekleştiren bir nesne oluşturur, bu nesneyi IDebugParsedExpression ögesine yerleştirir ve IDebugExpression2 ögesinden IDebugExpression2 nesnesini döndürür.

İfadeyi değerlendirme

Visual Studio, ayrıştırılan ifadeyi değerlendirmek için EvaluateSync veya EvaluateAsync çağırır. Bu yöntemlerin her ikisi de ayrıştırılan ifadeyi değerlendirmek ve ayrıştırılan ifadenin değerini ve türünü temsil eden bir IDebugProperty2 arabirimi döndürmek için IDebugExpression2::EvaluateSync çağırır (IDebugExpression2::EvaluateAsyncyöntemi hemen çağırırken, arka plan iş parçacığı aracılığıyla yöntemini çağırır). IDebugParsedExpression::EvaluateSync sağlanan SH, adres ve bağlayıcıyı kullanarak ayrıştırılmış ifadeyi, arabirim IDebugProperty2 tarafından temsil edilen gerçek bir değere dönüştürür.

Örneğin:

Çalışan bir programda kesme noktasına isabet ettikten sonra, kullanıcı QuickWatch iletişim kutusunda bir değişkeni görüntülemeyi seçer. Bu iletişim kutusu değişkenin adını, değerini ve türünü gösterir. Kullanıcı genellikle değeri değiştirebilir.

QuickWatch iletişim kutusu gösterildiğinde, incelenen değişkenin adı ParseText'e metin olarak gönderilir. Bu, ayrıştırılmış ifadeyi temsil eden bir IDebugExpression2 nesnesi döndürür. Bu durumda değişken. Daha sonra değişkenin değerini ve türünü ve adını temsil eden bir IDebugProperty2 nesne oluşturmak için EvaluateSync çağrılır. Görüntülenen bilgiler bu bilgilerdir.

Kullanıcı değişkenin değerini değiştirirse SetValueAsString yeni değerle çağrılır ve bu da program çalışmaya devam ettiğinde kullanılacak şekilde bellekteki değişkenin değerini değiştirir.

Değişkenlerin değerlerini görüntüleme işlemiyle ilgili daha fazla ayrıntı için bkz. Yerel öğeleri görüntüleme. Değişkenin değerinin nasıl değiştirildiği hakkında daha fazla bilgi için bkz. Yerel değeri değiştirme.

Bu bölümde

Değerlendirme bağlamı, DE EE'yi çağırdığında aktarılan argümanları iletir.

Anahtar ifade değerlendirici arabirimleri , değerlendirme bağlamıyla birlikte EE yazarken gereken önemli arabirimleri açıklar.