Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez a témakör egy videós oktatóanyagot tartalmaz, amely bemutatja, hogyan lehet hibakeresést végezni a Windows Illesztőprogram-keretrendszerek (WDF) illesztőprogramjában teljes hozzáféréssel a WDF-forráskódhoz. A videót követően, a videóban követett lépésről-lépésre eljárást találja meg a kényelmes hivatkozás érdekében.
A WDF-forráskeresés lehetővé teszi, hogy szabadon lépkedjen a keretrendszer kódjába anélkül, hogy le kellene töltenie a WDF-forráskódot. A hibakereső automatikusan letölti a WDF megfelelő verzióját a GitHubról.
Ha például a WinDbg-et használja a WDF-illesztőprogram hibakereséséhez egy Windows 10-es gépen, és a hibakereső be van kapcsolva a hívásverem keretrendszerkódjával, a Hívásverem nézetben duplán rákattinthat a WDF-keretre, és a WinDbg automatikusan letölti és megnyitja a megfelelő WDF-forrásfájlt az egyező sorban. Ezután végiglépkedhet a kódon, és töréspontokat állíthat be.
Ez a funkció a Windows 10, Technical Preview 10041-es vagy újabb build nyilvános kiadásait futtató célrendszerekhez érhető el. Ezek a buildek privát forrásból indexelt szimbólumfájlokkal rendelkeznek a KMDF (Wdf01000.sys) és az UMDF (Wudfx02000.dll) számára a Microsoft nyilvános szimbólumkiszolgálón. A WDF-kód forrásszintű hibakeresése csak a WinDbg-ben érhető el, a Visual Studio hibakeresőjében nem.
gyorskonfigurálás
Indítsa el a WinDbg kernel hibakeresési munkamenetét a célgépen, jelentkezzen be, és kövesse az alábbi lépéseket:
Állítsa be az alapértelmezett szimbólum elérési útját a .symfix használatával. Ezzel beállítja a szimbólum elérési útját, hogy a következőre mutasson a szimbólumkiszolgálóra https://msdl.microsoft.com/download/symbols: .
kd> .symfixÁllítsa be az alapértelmezett forrás elérési útját a .srcfix használatával. Ezzel beállítja a forrás elérési útját a srv*-hoz, amely arra utasítja a hibakeresőt, hogy kérje le a forrásfájlokat a célmodulok szimbólumfájljaiban megadott helyekről.
kd> .srcfix Source search path is: SRV*Töltse újra a szimbólumokat a .reload használatával, és győződjön meg arról, hogy a Wdf01000.sys szimbólumok (vagy az UMDF Wudfx02000.dll) forrásindexeltek. Ahogy az alábbi !lmi kimenetében látható, a Wdf01000.sys PDB forrásindexelt. Ha a sajátja nem, tekintse meg az alábbi WinDbg telepítő szakaszt.
kd> .reload ... kd> !lmi wdf01000.sys Loaded Module Info: [wdf01000.sys] ... Load Report: private symbols & lines, source indexed C:\...\Wdf01000.pdb\...\Wdf01000.pdbMost már minden be van állítva! A WDF forráskódjának könnyű vizsgálati módja, ha beállít egy megszakítási pontot a keretrendszer IRP feldolgozó eljárásán, majd lépésről lépésre haladjon végig a kód további részein. Mivel egy Windows-rendszer sok bejövő KMDF-illesztővel rendelkezik, a WDF mindig betöltődik és fut, így ezt a töréspontot azonnal eléri (anélkül, hogy saját illesztőprogramot kellene betöltenie).
kd> bp Wdf01000!FxDevice::DispatchWithLock kd> g Breakpoint 0 hit Wdf01000!FxDevice::DispatchWithLock: 87131670 8bff mov edi,edi
Ha ez nem működik, tekintse meg az alábbi WinDbg telepítési lépéseket.
WinDbg beállítása
Ha a fenti példa nem a várt módon működött, előfordulhat, hogy az alábbi utasítások közül egy vagy többre van szükség.
Forrásmód hibakeresésének engedélyezése
Győződjön meg arról, hogy a hibakeresés engedélyezve van a forrás módban . Nyissa meg a Hibakeresés menüt, és győződjön meg arról, hogy a forrás mód be van jelölve.
Elavult szimbólumok gyorsítótárának törlése
Ha korábban ugyanahhoz a Windows-célhoz hibakeresést végzett a WDF-illesztőprogramok esetében, akkor előfordulhat, hogy a helyileg gyorsítótárazott WDF-szimbólumokat használja, amelyek nem voltak forrásindexelve. Ezt a !lmi paranccsal ellenőrizheti:
kd> !lmi Wdf01000.sys
Loaded Module Info: [wdf01000.sys]
...
Load Report: private symbols & lines, not source indexed
C:\...\Wdf01000.pdb\...\Wdf01000.pdb
A fenti Terhelési jelentés szerint a Wdf01000.pdb nem indexelt forrás. Ez azt jelenti, hogy a helyi WinDbg szimbólumok gyorsítótára elavult. A probléma megoldásához távolítsa el a PDB-t a WinDbg-ből, törölje a helyi gyorsítótárat (az elérési út eltérhet a fenti !lmi kimenettől függően), és töltse újra a PDB-t:
kd> .reload /u Wdf01000.sys
CMD> del
C:\...\Wdf01000.pdb\...\Wdf01000.pdb
kd> .reload Wdf01000.sys
Most futtassa a!lmi parancsot az újbóli ellenőrzéshez: a PDF-fájlnak forrásindexeltként kell megjelennie, és fel kell bukkannia egy forráskódablakra.
kd> !lmi Wdf01000.sys
Loaded Module Info: [wdf01000.sys]
...
Load Report: private symbols & lines, source indexed
C:\...\Wdf01000.pdb\...\Wdf01000.pdb
A WDF forrásszintű hibakeresését nem csak az élő hibakereséshez és az összeomlási memóriaképek elemzéséhez használhatja, hanem a keretrendszer belső funkcióinak megismeréséhez is, ha töréspontokat állít be az olyan alapvető függvényeken, mint az IRP-diszpécser, és felfedezheti az azt követő kódútvonalakat.