Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
WDF obsahuje interní protokolovací nástroj trasování, někdy označovaný jako In-flight Recorder (IFR). Protokolovací nástroj WDF vytvoří protokol trasování, který obsahuje nedávnou historii událostí pro každý ovladač WDF. Protokoly trasování sledují průběh paketů požadavků vstupně-výstupních operací (IRPs) prostřednictvím rámce a souvisejících požadavků skrze ovladač. Každý ovladač Kernel-Mode Driver Framework (KMDF) a User-Mode Driver Framework (UMDF) má svůj vlastní protokol.
Protokolovací služba WDF je vždy aktivní. Pro každý trasovací protokol protokolovací nástroj ukládá záznamy událostí do kruhové vyrovnávací paměti. Volitelně můžete zapnout podrobnější výstup, což způsobí, že protokolovací nástroj událostí zaznamená další informace, které vám pomohou ladit ovladač, například vstupy do nebo výstupy z interních cest kódu. Ve výchozím nastavení je velikost vyrovnávací paměti jedna stránka paměti a verbosita je vypnutá. Velikost a úroveň podrobností vyrovnávací paměti můžete změnit úpravou těchto hodnot v aplikaci WdfVerifier. Upozorňujeme, že zapnutí podrobného výstupu může snížit výkon systému.
Rozšíření ladicího programu WDF můžete použít k zobrazení a uložení protokolu WDF během interaktivního ladění. Pro zobrazení protokolu WDF během ladicí relace:
Načtěte správné symboly. Můžete použít příkaz debuggeru .symfix+ pro připojení veřejného úložiště symbolů Microsoft k vaší současné cestě symbolů. Veřejné úložiště symbolů obsahuje symboly pro binární soubory WDF. Můžete také chtít načíst symboly pro symboly ovladače.
Další informace o tom, jak získat symboly okna a jak nastavit cestu symbolu ladicího programu, naleznete v dokumentaci, která je dodávána s balíčkem Ladění systému Windows .
Načtěte knihovnu rozšířeníWdfkd.dll do svého ladicího programu. Pokud používáte ladicí program jádra, můžete to provést pomocí příkazu .load . Chcete-li načíst správnou verzi Wdfkd.dll, musíte zadat plně kvalifikovanou cestu k knihovně DLL. Například byste použili následující cestu na hostitelském počítači ladicího programu založeného na platformě x86:
.load "C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\winext\wdfkd.dll"Potom můžete ověřit, že se rozšíření načte pomocí příkazu !chain a zobrazit všechna načtená rozšíření.
Použijte rozšíření !wdfhelp pro více informací o rozšíření ladicího programu frameworku. Další informace o ladicím programu jádra naleznete v dokumentaci dodané s balíčkem ladění systému Windows .
Pokud ovladač používá architekturu verze 1.11 nebo novější a používáte ladicí program jádra z Windows 8 nebo novějšího, můžete tento krok přeskočit.
Pokud váš ovladač používá verzi rozhraní starší než 1.11, použijte soubor !wdftmffile nebo !wdfsearchpath k určení souboru zprávy trasování specifické pro platformu (.tmf) nebo cestu k souboru .tmf. Soubory .tmf jsou umístěny v podadresářích specifických pro platformu v WDK.
Vzhledem k tomu, že soubory .tmf jsou specifické pro verzi, je nutné zadat soubor .tmf, který odpovídá verzi knihovny modulu runtime architektury, která je aktuálně spuštěna. Pokud je například na hostitelském počítači spuštěná služba KMDF verze 1.9:
!wdftmffile c:\WinDDK\<version>\tools\tracing\x86\wdf01009.tmfCestu hledání můžete nastavit také nastavením proměnné prostředí TRACE_FORMAT_SEARCH_PATH. Příkaz !wdftmffile má přednost před cestou hledání, která je nastavena proměnnou prostředí.
Pokud chcete ověřit číslo verze rozhraní, můžete spustit příkaz rozšíření ladicího programu !wdfldr z ladicího programu jádra.
K zobrazení záznamů protokolovacího nástroje událostí použijte rozšíření !wdflogdump . Například následující snímek obrazovky okna příkazu WinDbg ukazuje typický příklad výstupu !wdflogdump:
Každému řádku v protokolu rámce předchází řetězec, který se nazývá předpona zprávy trasování. Protokolovací modul trasování předpíše tuto předponu každé zprávě, která je zapsána do protokolu. Ve výchozím nastavení obsahuje předpona standardní sadu datových prvků, ale výchozí prvky můžete změnit tak, aby vyhovovaly vašim konkrétním požadavkům. Předponu pro ovladač WDF můžete změnit úpravou proměnné prostředí TRACE_FORMAT_PREFIX nebo použitím příkazu rozšíření ladicího programu !wdfsettraceprefix.
Pokud chcete nastavit proměnnou prostředí, použijte příkaz podobný následujícímu:
Set TRACE_FORMAT_PREFIX=%2!s!: %!FUNC!: %8!04x!.%3!04x!: %4!s!:
Tento příkaz nastaví předponu zprávy trasování na následující:
SourceFile_LineNumber: FunctionName: ProcessID.ThreadID: SystemTime
Pomocí příkazu rozšíření !wdflogsave můžete také uložit záznamy protokolovacího nástroje událostí do souboru protokolu trasování událostí (.etl), který můžete zobrazit pomocí TraceView.
Někdy můžete použít rozšíření ladicího programu !wdfcrashdump na výpisu chyb k zobrazení informací protokolu po kontrole systémových chyb. Informace protokolu jsou k dispozici v výpisu stavu systému pouze v případě, že architektura dokáže určit, že ovladač způsobil kontrolu chyb nebo pokud jste pro ovladač nastavili hodnotu registru ForceLogsInMiniDump .
Pokud je ladicí program připojen při kontrole chyb, můžete buď použít !wdfcrashdump k okamžitému zobrazení informací protokolu, nebo můžete zobrazit informace načtením souboru výpisu paměti. Kvůli omezením velikosti malého souboru s výpisem paměti se nemusí v výpisu paměti zobrazit protokol ovladače, který způsobil chybové ukončení.
Architektura může určit, jestli konkrétní ovladač způsobil následující kódy kontroly chyb:
- Kontrola chyby 0xD1: DRIVER_IRQL_NOT_LESS_OR_EQUAL
- Kontrola chyb (Bug Check) 0xA: IRQL_NOT_LESS_OR_EQUAL
- Kontrola chyb 0x20: KERNEL_APC_PENDING_DURING_EXIT
- Kontrola chyby 0x8E: KERNEL_MODE_EXCEPTION_NOT_HANDLED
- Kontrola chyb 0x1E: KMODE_EXCEPTION_NOT_HANDLED
- Kontrola chyb 0x50: PAGE_FAULT_IN_NONPAGED_AREA
- Kontrola chyb 0x7E: SYSTEM_THREAD_EXCEPTION_NOT_HANDLED
Počínaje verzí UMDF 2 ukládá UMDF protokol trasování UMDF (nebo UMDF IFR) do nepageované paměti jádra. Architektura přidělí jednu IFR na každou instanci hostitele ovladače (Wudfhost).
Další informace o příkazech rozšíření ladicího programu naleznete v tématu Rozšíření ladicího programu pro ovladače založené na rozhraní.