Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu konu, WDF kaynak koduna tam erişim sağlanarak Windows Driver Frameworks (WDF) sürücünüzde nasıl hata ayıklanacağını gösteren bir video öğretici içerir. Videodan sonra, kolay başvurmak için videoda takip edilen adım adım prosedür yer alır.
WDF kaynak hata ayıklama, WDF kaynak kodunu indirmeye gerek kalmadan çerçeve koduna serbestçe adımlamanızı sağlar. Hata ayıklayıcı, GitHub'dan otomatik olarak doğru WDF sürümünü indirir.
Örneğin, Windows 10 makinesinde WDF sürücünüzün hatalarını ayıklamak için WinDbg kullanıyorsanız ve hata ayıklayıcı çağrı yığınında çerçeve koduyla bozuksa, Çağrı Yığını görünümünde WDF çerçevesine çift tıklayabilir ve WinDbg ilgili WDF kaynak dosyasını eşleşen satırda otomatik olarak indirip açar. Ardından kodda adım adım ilerleyebilir ve kesme noktaları ayarlayabilirsiniz.
Bu özellik Windows 10, Technical Preview derleme 10041 veya sonraki sürümlerin genel sürümlerini çalıştıran hedef sistemler için kullanılabilir. Bu derlemeler, Microsoft Genel Sembol Sunucusu'nda KMDF (Wdf01000.sys) ve UMDF (Wudfx02000.dll) için özel kaynak dizinli sembol dosyalarına sahiptir. WDF kodunun kaynak düzeyinde hata ayıklaması yalnızca WinDbg'de kullanılabilir, Visual Studio hata ayıklayıcısında kullanılamaz.
Hızlı Başlangıç
Hedef makinede bir WinDbg çekirdeği hata ayıklama oturumu başlatın, oturum açın ve şu adımları izleyin:
.symfix kullanarak varsayılan simge yolunu ayarlayın. Bu, sembol yolunu konumundaki https://msdl.microsoft.com/download/symbolssembol sunucusuna işaret etmek için ayarlar.
kd> .symfix.srcfix kullanarak varsayılan kaynak yolunu ayarlayın. Bu, kaynak yolu srv* olarak ayarlar ve hata ayıklayıcıya hedef modüllerin sembol dosyalarında belirtilen konumlardan kaynak dosyaları almasını söyler.
kd> .srcfix Source search path is: SRV*.reload kullanarak simgeleri yeniden yükleyin ve Wdf01000.sys simgelerinin (veya UMDF için Wudfx02000.dll) kaynak dizine eklendiğini onaylayın. Aşağıdaki !lmi çıktısında gösterildiği gibi, Wdf01000.sys PDB kaynak indekslidir. Sizinki değilse, aşağıdaki WinDbg Kurulumu bölümüne bakın.
kd> .reload ... kd> !lmi wdf01000.sys Loaded Module Info: [wdf01000.sys] ... Load Report: private symbols & lines, source indexed C:\...\Wdf01000.pdb\...\Wdf01000.pdbArtık hazırsınız! WDF kaynak kodunda adım adım ilerleyecek kolay bir yol, çerçevenin IRP dağıtım yordamında bir kesme noktası ayarlamak ve kodun geri kalanında adım adım ilerleyebilmektir. Bir Windows sisteminde birçok yerleşik KMDF sürücüsü olduğundan, WDF her zaman yüklüdür ve çalışır, bu nedenle bu kesme noktasına hemen ulaşılır (kendi sürücünüzü yüklemenize gerek kalmadan).
kd> bp Wdf01000!FxDevice::DispatchWithLock kd> g Breakpoint 0 hit Wdf01000!FxDevice::DispatchWithLock: 87131670 8bff mov edi,edi
Bu işe yaramazsa aşağıdaki WinDbg Kurulumu adımlarını gözden geçirin.
WinDbg Kurulumu
Yukarıdaki örnek beklendiği gibi çalışmadıysa aşağıdaki yönergelerden birini veya daha fazlasını gerçekleştirmeniz gerekebilir.
Kaynak Modu Hata Ayıklamasını Etkinleştirme
Kaynak Modu'nda hata ayıklamanın etkinleştirildiğinden emin olun. Hata Ayıklama menüsünü açın ve Kaynak Modu'nun işaretli olduğunu onaylayın.
Eski Simgeler Önbelleğini Temizle
Daha önce aynı Windows hedefi için WDF sürücülerinin hatalarını ayıkladıysanız, kaynak dizine alınmamış yerel olarak önbelleğe alınmış WDF simgelerini kullanıyor olabilirsiniz. Bunu !lmi komutuyla de kontrol edebilirsiniz:
kd> !lmi Wdf01000.sys
Loaded Module Info: [wdf01000.sys]
...
Load Report: private symbols & lines, not source indexed
C:\...\Wdf01000.pdb\...\Wdf01000.pdb
Yukarıdaki Yük Raporu'na göre Wdf01000.pdb kaynak dizinlenmiş değil. Bu, yerel WinDbg sembolleri önbelleğinizin eski olduğu anlamına gelir. Bunu düzeltmek için PDB'yi WinDbg'den kaldırın, yerel önbelleği temizleyin (yolunuz yukarıdaki !lmi çıkışına göre farklılık gösterebilir) ve PDB'yi yeniden yükleyin:
kd> .reload /u Wdf01000.sys
CMD> del
C:\...\Wdf01000.pdb\...\Wdf01000.pdb
kd> .reload Wdf01000.sys
Şimdi yeniden denetlemek için !lmi komutunu çalıştırın: PDB kaynak dizini oluşturulmuş olarak görünmelidir ve bir kaynak kodu penceresi açılmalıdır.
kd> !lmi Wdf01000.sys
Loaded Module Info: [wdf01000.sys]
...
Load Report: private symbols & lines, source indexed
C:\...\Wdf01000.pdb\...\Wdf01000.pdb
WDF kaynak düzeyinde hata ayıklamayı yalnızca canlı hata ayıklama ve kilitlenme dökümlerini analiz etmek için değil, aynı zamanda IRP dağıtıcısı gibi temel işlevlerde kesme noktaları ayarlayarak ve sonraki kod yollarını keşfederek çerçeve iç bileşenleri hakkında daha fazla bilgi edinmek için de kullanabilirsiniz.