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.
Egyszerre több memóriaképfájlt vagy élő felhasználói módú alkalmazást is hibakeresésre használhat. Minden cél egy vagy több folyamatot tartalmaz, és mindegyik folyamat egy vagy több szálat tartalmaz.
Ezek a célok rendszerekbeis vannak csoportosítva. A rendszerek olyan célkészletek, amelyek csoportosítva vannak az egyszerű azonosítás és a manipuláció érdekében. A rendszerek a következőképpen vannak definiálva:
Minden kernelmódú vagy felhasználói módú memóriaképfájl külön rendszer.
Ha élő felhasználói módú alkalmazásokat keres különböző számítógépeken (folyamatkiszolgálóval, például Dbgsrv használatával), minden alkalmazás külön rendszer.
Amikor az élő felhasználói módban futó alkalmazásokat hibakeresed a helyi számítógépen, az alkalmazások egyetlen rendszerbe vannak foglalva.
A jelenlegi vagy aktív rendszer a jelenleg hibakeresés alatt álló rendszer.
Több célpont megszerzése
Az első célpontot a szokásos módon érik el.
További élő felhasználói módú alkalmazások hibakereséséhez használja a .attach (Attach to Process) vagy .create (Create Process) parancsot, majd a g (Go) parancsot.
További memóriaképfájlok hibakereséséhez használja a .opendump (Open Dump File) parancsot, majd a g (Go) parancsot. A hibakereső elindításakor több memóriaképfájlt is megnyithat. Több memóriaképfájl megnyitásához adjon meg több -z kapcsolót a parancsban, amelyeket egy másik fájlnév követ.
Az előző parancsokat akkor is használhatja, ha a folyamatok különböző rendszereken vannak. Minden rendszeren létre kell hoznia egy folyamatkiszolgálót, majd a -premote paramétert kell használnia .attach vagy .create a megfelelő folyamatkiszolgáló azonosításához. Ha a .attach vagy .create parancsot használja újra a -premote paraméter megadása nélkül, a hibakereső egy folyamatot csatol vagy hoz létre az aktuális rendszeren.
Rendszerek és célok manipulálása
A hibakeresés megkezdésekor az aktuális rendszer az, amelyhez a hibakereső legutóbb csatlakozott. Kivétel esetén az aktuális rendszer arra a rendszerre vált, amelyen ez a kivétel történt.
Az egyik cél bezárásához és a többi cél hibakereséséhez használja a .kill (Kill Process) parancsot. Használhatja a .detach (Leválasztás a folyamatról) parancsot vagy a WinDbg Hibakeresés | Debuggee leválasztása menüparancsot. Ezek a parancsok leválasztják a hibakeresőt a célról, de a cél továbbra is fut.
Több rendszer hibakeresésének szabályozásához az alábbi módszereket használhatja:
A(z) || (Rendszerállapot) parancs egy vagy több rendszer adatait jeleníti meg
A(z) || s (Jelenlegi rendszer beállítása) parancs lehetővé teszi az aktuális rendszer kiválasztását
(Csak WinDbg) A Folyamatok és szálak ablak lehetővé teszi a rendszerek, folyamatok és szálak megjelenítését vagy kiválasztását
A parancsok használatával kiválaszthatja az aktuális rendszert, és a szabványos parancsokkal kiválaszthatja az aktuális folyamatot és szálat, így meghatározhatja a memóriát és a regisztereket megjelenítő parancsok környezetét.
Ezek a folyamatok azonban nem különíthetők el egymástól. A g (Go) parancs mindig az összes cél együttes végrehajtását eredményezi.
Megjegyzés Komplikációk adódnak, amikor valós idejű célpontokat és memóriaképeket együtt hibakeresünk, mert a parancsok különbözőképpen viselkednek az egyes hibakeresési típusok esetében. Ha például a g (Go) parancsot használja, amikor az aktuális rendszer egy memóriaképfájl, a hibakereső elkezdi a végrehajtást, de nem mozdíthatja meg a hibakeresőt, mert a megszakítási parancs nem ismerhető fel érvényesként a memóriaképfájl hibakeresése során.
Példa
Ha egyszerre három memóriaképfájlt szeretne használni, a -z beállítással betöltheti őket a WinDbg indításakor.
windbg -z c:\notepad.dmp -z c:\paint.dmp -z c:\calc.dmp
További információkért lásd a WinDbg Command-Line Beállításokrészt. A .opendump és a g (Go) parancsokkal további memóriaképfájlokat is betölthet a hibakeresőbe.
Használja a || (Rendszerállapot) parancsot annak megerősítésére, hogy mindhárom rendszer jelen van-e.
||0:0:007> ||
. 0 User mini dump: c:\notepad.dmp
1 User mini dump: C:\paint.dmp
2 User mini dump: c:\calc.dmp
A memóriaképfájlok betöltéséhez használja a g (Go) parancsot.
||0:0:007> g
************* Path validation summary **************
Response Time (ms) Location
Deferred srv*
Symbol search path is: srv*
Executable search path is:
Windows 10 Version 15063 MP (4 procs) Free x64
Product: WinNt, suite: SingleUserTS
15063.0.amd64fre.rs2_release.170317-1834
Machine Name:
Debug session time: Fri Jun 9 15:52:04.000 2017 (UTC - 7:00)
System Uptime: not available
Process Uptime: 0 days 0:03:44.000
...............................................................
This dump file has a breakpoint exception stored in it.
The stored exception information can be accessed via .ecxr.
ntdll!DbgBreakPoint:
00007ff8`aada8d70 cc int 3
Ezután használja a(z) || s (Jelenlegi rendszer beállítása) parancsot az aktuális rendszer 1. rendszerre való beállításához, majd az aktuális rendszer megjelenítéséhez.
||1:1:017> ||1s
||1:1:017> ||
0 User mini dump: c:\notepad.dmp
. 1 User mini dump: c:\paint.dmp
2 User mini dump: c:\calc.dmp
Ha végzett az aktuális memóriaképfájl megtekintésével, használhatja a .detach parancsot.
||1:1:017> .detach
ntdll!DbgBreakPoint:
00007ff8`aada8d70 cc int 3
Detached
||0:0:007> ||
. 0 User mini dump: c:\notepad.dmp
2 User mini dump: c:\calc.dmp
Erőforrások
A hibakereséssel kapcsolatos további információkért tekintse meg az alábbi erőforrásokat.
Könyvek
Speciális Windows-hibakeresés Mario Hewardt és Daniel Pravat által
A Windowson belüli hibakeresés: Gyakorlati útmutató Tarik Soulami windowsos hibakeresési és nyomkövetési stratégiáihoz
Windows Internals by Pavel Yosifovich, Alex Ionescu, Mark E. Russinovich és David A. Solomon
Video
A töredezettségmentesítési eszközök Show WinDbg Episodes 13-29: </shows/defrag-tools/>