Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Det här avsnittet innehåller en videoguide som visar hur du felsöker WDF-drivrutinen (Windows Driver Frameworks) med fullständig åtkomst till WDF-källkoden. Följande video är den stegvisa proceduren som följs i videon, för praktisk referens.
Med WDF-källfelsökning kan du gå fritt in i ramverkskoden utan att behöva ladda ned WDF-källkod. Felsökningsprogrammet laddar automatiskt ned rätt version av WDF från GitHub.
Om du till exempel använder WinDbg för att felsöka WDF-drivrutinen på en Windows 10-dator, och felsökningsprogrammet är indelat med ramverkskod i anropsstacken, kan du dubbelklicka på WDF-ramen i vyn Samtalsstack och WinDbg laddas ned automatiskt och öppnar relevant WDF-källfil på matchande rad. Du kan sedan gå igenom koden och ange brytpunkter.
Den här funktionen är tillgänglig för målsystem som kör offentliga versioner av Windows 10, Technical Preview build 10041 eller senare. Dessa versioner har indexerade symbolfiler för privata källor för KMDF (Wdf01000.sys) och UMDF (Wudfx02000.dll) tillgängliga på Microsoft Public Symbol Server. Felsökning på källnivå av WDF-kod är endast tillgängligt i WinDbg och inte i Visual Studio-felsökningsprogrammet.
Snabbstart
Starta en WinDbg-kernel-felsökningssession på måldatorn, bryt in och följ dessa steg:
Ange standardsökvägen för symbolen med hjälp av .symfix. Detta anger symbolsökvägen så att den pekar på symbolservern vid https://msdl.microsoft.com/download/symbols.
kd> .symfixAnge standardsökvägen för källan med hjälp av .srcfix. Detta anger källsökvägen till srv*, som instruerar felsökaren att hämta källfiler från platser som anges i målmodulernas symbolfiler.
kd> .srcfix Source search path is: SRV*Läs in symboler igen med .reload och bekräfta att de Wdf01000.sys symbolerna (eller Wudfx02000.dll för UMDF) är källindexerade. Som du ser i utdata från !lmi nedan är Wdf01000.sys PDB källindexerad. Om din inte är det, se avsnittet om WinDbg-installationen nedan.
kd> .reload ... kd> !lmi wdf01000.sys Loaded Module Info: [wdf01000.sys] ... Load Report: private symbols & lines, source indexed C:\...\Wdf01000.pdb\...\Wdf01000.pdbNu är allt klart! Ett enkelt sätt att gå igenom WDF-källkoden är att ange en brytpunkt för ramverkets IRP-sändningsrutin och sedan gå igenom resten av koden. Eftersom ett Windows-system har många inbyggda KMDF-drivrutiner är WDF alltid inläst och körs, så kommer den här brytpunkten att nås omedelbart (utan att behöva ladda in din egen drivrutin).
kd> bp Wdf01000!FxDevice::DispatchWithLock kd> g Breakpoint 0 hit Wdf01000!FxDevice::DispatchWithLock: 87131670 8bff mov edi,edi
Om detta inte fungerar kan du läsa stegen i WinDbg-konfigurationen nedan.
WinDbg-installation
Om exemplet ovan inte fungerade som förväntat kan du behöva utföra en eller flera av anvisningarna nedan.
Aktivera felsökning av källläge
Kontrollera att felsökning i källläge är aktiverat. Öppna felsökningsmenyn och bekräfta att källläget är markerat.
Rensa föråldrade symbolers cache
Om du tidigare har debuggat WDF-drivrutiner för samma Windows-mål kanske du använder de lokalt cachelagrade WDF-symbolerna som inte var källindexerade. Du kan kontrollera detta med kommandot !lmi:
kd> !lmi Wdf01000.sys
Loaded Module Info: [wdf01000.sys]
...
Load Report: private symbols & lines, not source indexed
C:\...\Wdf01000.pdb\...\Wdf01000.pdb
Enligt belastningsrapporten ovan är Wdf01000.pdb inte källindexerad. Det innebär att din lokala WinDbg-symbolcache är inaktuell. Åtgärda detta genom att ta bort PDB från WinDbg, rensa den lokala cachen (din sökväg kan skilja sig beroende på !lmi-utdata ovan) och läsa in PDB igen:
kd> .reload /u Wdf01000.sys
CMD> del
C:\...\Wdf01000.pdb\...\Wdf01000.pdb
kd> .reload Wdf01000.sys
Kör nu !lmi för att kontrollera igen: PDB bör visas som källindexerad och ett källkodsfönster ska visas.
kd> !lmi Wdf01000.sys
Loaded Module Info: [wdf01000.sys]
...
Load Report: private symbols & lines, source indexed
C:\...\Wdf01000.pdb\...\Wdf01000.pdb 
Du kan använda felsökning på WDF-källnivå, inte bara för direkt felsökning och analys av kraschdumpar, utan även för att lära dig mer om ramverkets interna funktioner genom att ange brytpunkter på kärnfunktioner som IRP-avsändaren och utforska efterföljande kodsökvägar.