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.
WDF bazen çerçevenin In-flight Recorder (IFR) olarak adlandırılan bir iç izleme kaydedicisi içerir. WDF günlükçü, her WDF sürücüsü için olayların yakın tarihli geçmişini içeren bir izleme günlüğü oluşturur. İzleme günlükleri, çerçeve aracılığıyla G/Ç istek paketlerinin (IRP) ilerleme durumunu ve bir sürücü aracılığıyla ilgili istekleri izler. Her Kernel-Mode Driver Framework (KMDF) ve User-Mode Driver Framework (UMDF) sürücüsünün kendi günlüğü vardır.
WDF günlükçü her zaman etkindir. Günlükçü, her izleme günlüğü için olay kayıtlarını döngüsel bellek arabelleğinde depolar. İsteğe bağlı olarak, olay günlüğünün sürücüdeki hata ayıklamanıza yardımcı olabilecek, iç kod yollarına girişler veya çıkışlar gibi ek bilgileri kaydetmesine olanak tanıyan ayrıntı düzeyini arttırabilirsiniz. Varsayılan olarak, arabelleğin boyutu bir bellek sayfasıdır ve ayrıntı düzeyi kapalıdır. WdfVerifier uygulamasıiçinde bu değerleri ayarlayarak, arabelleğin boyutunu ve ayrıntı düzeyini değiştirebilirsiniz. Ayrıntı düzeyinin açılmasının sistem performansını düşürebileceğini unutmayın.
Etkileşimli hata ayıklama sırasında WDF günlüğünü görüntülemek ve kaydetmek için WDF hata ayıklayıcısı uzantılarını kullanabilirsiniz. Hata ayıklama oturumu sırasında WDF günlüğünü görüntülemek için:
Doğru simgeleri yükleyin. .symfix+ hata ayıklayıcısı komutunu kullanarak Microsoft genel sembol deposunu mevcut sembol yolunuz sonuna ekleyebilirsiniz. Ortak sembol deposu, WDF binarileri için simgeler içerir. Sürücü simgeleriniz için sembolleri de yüklemek isteyebilirsiniz.
Pencere simgelerini alma ve hata ayıklayıcının sembol yolunu ayarlama hakkında ek bilgi için Windows Hata Ayıklama paketiyle birlikte verilen belgelere bakın.
Wdfkd.dll uzantı kitaplığını hata ayıklayıcınıza yükleyin. Çekirdek hata ayıklayıcısını kullanıyorsanız, bunu .load komutunu kullanarak yapabilirsiniz. Wdfkd.dll doğru sürümünü yüklemek için DLL'nin tam yolunu belirtmeniz gerekir. Örneğin, x86 tabanlı bir hata ayıklayıcı konak makinesinde aşağıdaki yolu kullanırsınız:
.load "C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\winext\wdfkd.dll"Ardından, yüklenen tüm uzantıları görüntülemek için !chain komutunu kullanarak uzantının yüklendiğini onaylayabilirsiniz.
Çerçeve hata ayıklayıcısı uzantısı hakkında daha fazla bilgi için !wdfhelp uzantısını kullanın. Çekirdek hata ayıklayıcısı hakkında daha fazla bilgi için Windows Hata Ayıklama paketiyle birlikte sağlanan belgelere bakın.
Sürücünüz çerçeve sürüm 1.11 veya üzerini kullanıyorsa ve Windows 8 veya sonraki sürümlerden çekirdek hata ayıklayıcısını kullanıyorsanız, bu adımı atlayabilirsiniz.
Sürücünüz 1.11'den önceki bir çerçeve sürümünü kullanıyorsa platforma özgü bir izleme iletisi biçimi (.tmf) dosyası veya .tmf dosyasının yolunu belirtmek için !wdftmffile veya !wdfsearchpath kullanın. .tmf dosyaları WDK'deki platforma özgü alt dizinlerde bulunur.
.tmf dosyaları sürüme özgü olduğundan, çerçevenin çalışmakta olan çalışma zamanı kitaplığının sürümüne karşılık gelen bir .tmf dosyası belirtmeniz gerekir. Örneğin, ana makinede KMDF sürüm 1.9 çalışıyorsa:
!wdftmffile c:\WinDDK\<version>\tools\tracing\x86\wdf01009.tmfTRACE_FORMAT_SEARCH_PATH ortam değişkenini ayarlayarak da arama yolunu ayarlayabilirsiniz. !wdftmffile komutu, ortam değişkeni tarafından ayarlanan arama yolundan önceliklidir.
Çerçeve sürüm numarasını doğrulamak için, çekirdek hata ayıklayıcısından !wdfldr hata ayıklayıcısı uzantısı komutunu çalıştırabilirsiniz.
Olay günlükçüsü kayıtlarını görüntülemek için !wdflogdump uzantısını kullanın. Örneğin, WinDbg Komut penceresinin aşağıdaki ekran görüntüsünde !wdflogdumpçıktısının tipik bir örneği gösterilmektedir:
Çerçevenin günlüğündeki her satırın önünde izleme iletisi ön ekiadlı bir dize bulunur. İzleme günlükçü bu ön eki günlüğe yazılan her iletiye ekler. Varsayılan olarak, ön ek standart bir veri öğeleri kümesi içerir, ancak varsayılan öğeleri belirli gereksinimlerinize uyacak şekilde değiştirebilirsiniz. TRACE_FORMAT_PREFIX ortam değişkenini ayarlayarak veya !wdfsettraceprefix hata ayıklayıcısı uzantısı komutunu kullanarak WDF sürücüsünün ön ek dizesini değiştirebilirsiniz.
Ortam değişkenini ayarlamak için aşağıdakine benzer bir komut kullanın:
Set TRACE_FORMAT_PREFIX=%2!s!: %!FUNC!: %8!04x!.%3!04x!: %4!s!:
Bu komut, izleme iletisi ön ekini aşağıdakine ayarlar:
SourceFile_LineNumber: FunctionName: ProcessID.ThreadID: SystemTime
Ayrıca !wdflogsave uzantısı komutunu kullanarak olay günlükçüsü kayıtlarını TraceViewkullanarak görüntüleyebileceğiniz bir olay izleme günlüğü (.etl) dosyasına kaydedebilirsiniz.
Bazen sistem hata denetimleri sonrasında günlük bilgilerini görüntülemek için bir hata dökümünde !wdfcrashdump hata ayıklayıcı uzantısını kullanabilirsiniz. Günlük bilgileri, kilitlenme bilgi dökümü içinde yalnızca çerçeve sürücünüzün hata denetimine neden olduğunu belirleyebiliyorsa veya sürücü için ForceLogsInMiniDump kayıt defteri değerini ayarladıysanız kullanılabilir.
Hata denetimi gerçekleştiğinde hata ayıklayıcı bağlıysa, günlük bilgilerini hemen görüntülemek için !wdfcrashdump kullanabilir veya bellek dökümü dosyasını yükleyerek bilgileri görüntüleyebilirsiniz. Küçük bir bellek dökümü dosyasının boyut sınırlamaları nedeniyle kilitlenmeye neden olan sürücünün günlüğü dökümde görünmeyebilir.
Çerçeve, belirli bir sürücünün aşağıdaki hata denetimi kodlarına neden olup olmadığını belirleyebilir:
- Hata Denetimi 0xD1: DRIVER_IRQL_NOT_LESS_OR_EQUAL
- Hata Denetimi 0xA: IRQL_NOT_LESS_OR_EQUAL
- Hata Denetimi 0x20: KERNEL_APC_PENDING_DURING_EXIT
- Hata Denetimi 0x8E: KERNEL_MODE_EXCEPTION_NOT_HANDLED
- Hata Denetimi 0x1E: KMODE_EXCEPTION_NOT_HANDLED
- Hata Denetimi 0x50: PAGE_FAULT_IN_NONPAGED_AREA
- Hata Kontrolü 0x7E: SYSTEM_THREAD_EXCEPTION_NOT_HANDLED
UMDF sürüm 2'den itibaren, UMDF izleme günlüğünü (veya UMDF IFR) çekirdek sayfalı olmayan bellek içerisinde depolar. Çerçeve, her sürücü barındırıcısı (Wudfhost) örneği için bir IFR ayırır.
Hata ayıklayıcısı uzantısı komutları hakkında daha fazla bilgi için bkz. Framework Tabanlı Sürücüler için Hata Ayıklayıcı Uzantıları.