Megosztás a következőn keresztül:


Több célpont hibakeresése

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 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/>