Aracılığıyla paylaş


Statik Sürücü Doğrulayıcı Raporunu Kullanma

SDV Raporu, doğrulama sonuçlarının etkileşimli bir görüntüsüdür. Bu bölümde, sürücüde bir kodlama hatası bulmak için SDV Raporu'nun nasıl kullanılacağı açıklanmaktadır. Rapor, pencerelerin özellikleri ve pencerelerdeki öğeler hakkında ayrıntılı bilgi için bkz. Statik Sürücü Doğrulayıcı Raporu.

Statik Sürücü Doğrulayıcı Hata Görüntüleyicisi'ni açma

SDV Sonuçlar bölmesinde herhangi bir "hata" (kural ihlali) bildirdiyse, ihlale dahil olan kodu Statik Sürücü Doğrulayıcı Raporu'nun Hata Görüntüleyicisi penceresinde görüntüleyebilirsiniz. Hata Görüntüleyicisi penceresinde kural ihlali yolundaki kod görüntülenir. ihlal edilen her kural için bir Hata Görüntüleyicisi penceresi vardır (aynı anda yalnızca bir Hata Görüntüleyicisi penceresi görüntüleyebilirsiniz).

Hata Görüntüleyicisi penceresini bir hata için açmak için:

  • Kusur düğümü altındaki listeden bir kural seçin.

Bir kusuru temsil eden beyaz X ile kırmızı daire simgesi.

Bu prosedür yalnızca hatalarda çalışır. Doğrulama sonuçları geçişler, zaman aşımları, boşluk aşımları, uygulanamaz veya başka bir hata olmayan sonuç gibi kusurlar değilse SDV Hata Görüntüleyicisi penceresi oluşturmaz.

Aşağıdaki ekran görüntüsünde Statik Sürücü Doğrulayıcı Raporu sayfası gösterilmektedir.

Statik Sürücü Doğrulayıcı Raporu sayfasının ekran görüntüsü.

Kuralı Gözden Geçirme

Kodda kural ihlalini bulmaya çalışmadan önce, sürücünün ihlal ettiğini kurallar hakkında bilgi sahibi olun.

Statik Sürücü Doğrulayıcı Kuralları bölümü, cancelSpinLock gibi her kuralı açıklayan bir konu içerir.

Kuralın kodunu görmek için, Statik Sürücü Doğrulayıcı Raporu'nun Kaynak Kodu bölmesinde CancelSpinLock.slic gibi kural kodunu içeren sekmeye tıklayın.

Örneğin, sürücü IoAcquireCancelSpinLock veya IoReleaseCancelSpinLock'u sıra dışı olarak çağırırsa veya sürücü döndürme kilidini serbest bırakmadan önce yordamdan çıkarsa CancelSpinLock kuralı ihlal edilir.

Hata Yolunu İzleme

Hata Görüntüleyicisi penceresi açıldığında, hata yolundaki ilk kritik sürücü çağrısını temsil eden İzleme Ağacı bölmesindeki öğe seçilir. Kaynak Kodu bölmesinde, ilişkili kaynak kodu satırı mavi renkle vurgulanır.

Aşağıdaki ekran görüntüsünde, Fail_Driver1 örnek sürücü tarafından CancelSpinLock kuralının ihlaline yönelik Statik Sürücü Doğrulayıcı Hata Görüntüleyicisi penceresinin açılış görünümü gösterilmektedir. Bu örnekte, CancelSpinLock kuralının ihlali yolundaki ilk sürücü çağrısı, sürücünün DispatchSystemControl yordamındaki IoAcquireCancelSpinLock çağrısıdır.

CancelSpinLock kuralı ihlali için Statik Sürücü Doğrulayıcı Hata Görüntüleyicisi penceresinin açılış görünümünün ekran görüntüsü.

Kaynak Kod Bölmesi'ni kullanma

Kaynak Kodu bölmesi, doğrulamada kullanılan kaynak dosyaları görüntüler. İzleme Ağacı bölmesindeki bir öğe seçildiğinde, öğeyle ilişkilendirilmiş kaynak kod dosyası bitişik Kaynak Kodu bölmesindeki dosya yığınının en üstünde görünür. Farklı bir kaynak dosyayı görmek için Kaynak Kodu bölmesinde kaynak dosyanın sekmesine tıklayın.

Aşağıdaki ekran görüntüsünde Kaynak Kodu bölmesi gösterilmektedir. Bu Kaynak Kodu bölmesinde, soluk mavi renkle vurgulanan kod satırları , İzleme Ağacı bölmesinde seçili öğeyle ilişkilendirilmiş olan satırlardır.

Statik Sürücü Doğrulayıcı Hata Görüntüleyicisi'ndeki Kaynak Kodu bölmesinin ekran görüntüsü.

Sürücü kodundaki hatanın yolunda yürütülen satırlar kırmızı metin olarak gösterilir. Bu örnekte yalnızca satır 116 ve 118 gibi kırmızı metin satırlarına bakarak, özellikle de bu örnekte kullanılan hata gibi basit bir kusuru görebilirsiniz. Bu durumda, sürücü spin kilidini alır ve ardından spin kilidini serbest bırakmadan gönderme yordamından geri döner.

İz Adımlarında İlerleyin

İzlemeye başlamak için İzleme Ağacı bölmesinde bir öğe seçin ve AŞAĞI OK tuşuna basın. AŞAĞI OK tuşuna her bastığınızda, İzleme Ağacı bölmesindeki sonraki öğe seçilir.

İzleme Ağacı bölmesindeki öğelerde adım adım ilerlediğinizde, sürücü kodundaki öğeler için Kaynak Kodu bölmesini izleyin. Kodun daraltılmış bir bölümünü genişletmek için SAĞ OK tuşuna basın. Kodun genişletilmiş bir bölümünü daraltmak için SOL OK tuşuna basın. İmleç kodun tüm çökmüş bölümlerini atlar.

İzleme Ağacı bölmesindeki öğeler arasında aşağı kaydırdığınızda, seçili öğenin kaynak kod dosyası Kaynak Kod bölmesindeki dosya yığınının en üstüne taşınır ve ilişkili kod satırı vurgulanır.

Aşağıdaki ekran görüntüsünde İzleme Ağacı ve Kaynak Kodu bölmeleriyle Statik Sürücü Doğrulayıcı Hata Görüntüleyicisi gösterilmektedir.

İzleme Ağacı ve Kaynak Kodu bölmeleri içeren Statik Sürücü Doğrulayıcı Raporu sayfasının ekran görüntüsü.

Kural Dosyası ve Durum Bölmesi'ni kullanma

SDV'nin doğrulama sırasında izlediği değişkenlerin değerlerini temsil eden Boole ifadeleri kümesini görüntülemek için Durum Bölmesi'ni kullanabilirsiniz.

Durum bölmesinde görüntülenen Boole ifadeleri, bu kümede TRUE olarak değerlendirilen ifadelerdir. İzleme Ağacı bölmesindeki öğe herhangi bir ifadenin değerini değiştirirse, Durum bölmesinin içeriği TRUE olarak değerlendirilen yeni ifade kümesini görüntüleyecek şekilde değişir.

İzleme Ağacı bölmesinde adım adım ilerlerken, SDV'nin kural dosyasında (*.slic) kullanılan ifadeleri değerlendirmek için bu değişkenlerin değerlerini nasıl kullandığını gözlemleyebilirsiniz.

Statik Sürücü Doğrulayıcı Raporu sayfasının aşağıdaki ekran görüntüsü, SDV testlerinin sürücünün daha önce bir döndürme kilidi edinip almadığını nasıl gösterdiğini gösterir. SDV, sürücünün daha önce bir döndürme kilidi edinip almadığını, yani s değişkeninin değerinin kilitli anlamına gelen 1 olup olmadığını test ediyor. Bu durumda, Durum bölmesinde gösterildiği gibi s!=1 (kilitsizdir), bu nedenle SDV kilidin alındığını belirten s değerini 1 olarak ayarlar.

Daha önce alınan döndürme kilidi için SDV testlerini gösteren Statik Sürücü Doğrulayıcı Raporu sayfasının ekran görüntüsü.

ABORT Yordamını Bulma

Sürücü kodu bir kuralı ihlal ettiğinde İzleme Ağacı bölmesi, kusuru raporlamaya yönelik bir ABORT yordamı içerir.

Bir hatanın kod yolu uzun ve karmaşık olduğunda, ABORT yordamını bulana kadar İzleme Ağacı bölmesinde aşağı kaydırmak ve hata raporunu en çok tetikleyen kodu bulmak için YUKARI OK tuşunu kullanmak genellikle yararlıdır.

Örneğin, aşağıdaki ekran görüntüsünde gösterildiği gibi, ABORT yordamı CancelSpinLock.slic dosyasından kilidin alınıp alınmadığını (s==kilitli) test ettikten sonra hatayı bildiren bir satırla ilişkilendirilir. Test, dağıtım yordamı sona erdiğinde gerçekleştirilen bir alt yordamın parçasıdır. Bu bilgilerden, sürücünün dağıtım yordamından geri dönmeden önce bir döndürme kilidini serbest bırakamadığı sonucuna varabilirsiniz.

CancelSpinLock.slic dosyasındaki bir satırla ilişkili ABORT yordamını gösteren Statik Sürücü Doğrulayıcı Raporu sayfasının ekran görüntüsü.

Statik Sürücü Doğrulayıcı Hata Görüntüleyicisi'ni kapatma

Hataya neden olan kod hatasını belirledikten sonra, geçerli kural için Statik Sürücü Doğrulayıcı Hata Görüntüleyicisi penceresini kapatabilir ve ardından Hata Görüntüleyicisi'ni farklı bir kural için açabilirsiniz.

Bir kural için Hata Görüntüleyicisi'ni kapatmak için:

  • Dosya menüsünden Çıkış'ı seçin.

Hata Görüntüleyicisi için Kapat düğmesine (X) de tıklayabilirsiniz. Statik Sürücü Doğrulayıcı Raporu için Kapat düğmesinin (X) hemen altında bulunur.

Aşağıdaki ekran görüntüsü, Hata Görüntüleyicisi'nin nasıl kapatılacağını göstermektedir.

Statik Sürücü Doğrulayıcı'da bir kural için Hata Görüntüleyicisi'ni kapatmayı gösteren ekran görüntüsü.