User-Mode-folyamat hibakeresése a WinDbg Classic használatával

A WinDbg használatával csatolhat egy futó folyamathoz, vagy létrehozhat és csatolhat egy új folyamatot.

Csatolás futó folyamathoz

A WinDbg számos módon csatolható egy futó folyamathoz. A választott módszertől függetlenül szüksége lesz a folyamatazonosítóra vagy a folyamat nevére. A folyamatazonosító az operációs rendszer által hozzárendelt szám. A folyamatazonosító és a folyamatnév meghatározásáról további információt a Folyamatazonosító megkeresése című témakörben talál.

WinDbg menü

Ha a WinDbg alvó módban van, a Fájl menü Csatolás egy folyamathoz parancsával vagy az F6 billentyű lenyomásával csatolhatja a futó folyamathoz.

A Folyamat csatolása párbeszédpanelen válassza ki a hibakereséshez használni kívánt folyamatot, majd kattintson az OK gombra.

Parancssor

A Parancssor ablakban a WinDbg indításakor csatolhat egy futó folyamathoz. Használja az alábbi parancsok egyikét:

  • windbg -pProcessID
  • windbg -pnProcessName

ahol a ProcessID egy futó folyamat folyamatazonosítója, vagy a ProcessName egy futó folyamat neve.

A parancssori szintaxisról további információt a WinDbg Command-Line Beállítások című témakörben talál.

Hibakereső parancsablaka

Ha a WinDbg már hibakeresést végzett egy vagy több folyamaton, a Hibakereső parancsablak.attach (Csatolás a folyamathoz) parancsával csatolhat egy futó folyamathoz.

A hibakereső mindig egyszerre több célfolyamatot indít el, kivéve, ha egyes szálak le vannak fagyasztva vagy fel vannak függesztve.

Ha a .attach parancs sikeres, a hibakereső a megadott folyamathoz csatlakozik, amikor a hibakereső legközelebb végrehajtási parancsot ad ki. Ha egy sorban többször is használja ezt a parancsot, a hibakeresőnek a parancs használata során legalább annyi alkalommal kell végrehajtást kérnie.

Nem invazív módon csatlakozás egy futó folyamathoz

Ha hibakeresést szeretne végezni egy futó folyamaton, és csak minimálisan szeretne beavatkozni a végrehajtásba, akkor nem beavatkozó módon kell hibakeresést végeznie.

WinDbg menü

Ha a WinDbg alvó módban van, a Fájl menüből a Folyamathoz csatlakozás opció kiválasztásával, vagy az F6 billentyű lenyomásával nem invazív hibakeresést végezhet egy futó folyamaton.

Amikor megjelenik a Folyamat csatolása párbeszédpanel, jelölje be a Neminvazív jelölőnégyzetet. Ezután válassza ki a kívánt folyamatazonosítót és -nevet tartalmazó sort. (A folyamatazonosítót a Folyamatazonosító mezőbe is beírhatja.) Végül válassza az OK gombot.

Parancssor

A parancssori ablakban a WinDbg indításakor nem invazív módon csatolhat egy futó folyamatot. Használja az alábbi parancsok egyikét:

  • windbg -pv -pProcessID
  • windbg -pv -pnProcessName

Számos más hasznos parancssori lehetőség is rendelkezésre áll. A parancssori szintaxisról további információt a WinDbg Command-Line Beállítások című témakörben talál.

Hibakereső parancsablaka

Ha a hibakereső már aktív, a Hibakereső parancsablak.attach -v (Csatolás a folyamathoz) parancsával invazívan hibakeresést végezhet egy futó folyamaton.

A .attach parancsot akkor használhatja, ha a hibakereső már invazív módon hibakeresést végzett egy vagy több folyamaton. Ezt a parancsot nem használhatja, ha a WinDbg alvó állapotban van.

Ha a .attach -v parancs sikeres, a hibakereső hibakeresni fogja a megadott folyamatot a következő végrehajtási parancs kiadásakor. Mivel a végrehajtás nem engedélyezett a neminvazív hibakeresés során, a hibakereső nem képes egyszerre több folyamatot is hibakeresésre. Ez a korlátozás azt is jelenti, hogy a .attach -v parancs használata egy meglévő invazív hibakeresési munkamenetet kevésbé hasznossá tehet.

Új folyamat létrehozása

A WinDbg elindíthat egy felhasználói módú alkalmazást, majd hibakeresést végezhet az alkalmazáson. Az alkalmazás neve szerint van meghatározva. A hibakereső automatikusan csatolhatja a gyermekfolyamatokat is (az eredeti célfolyamat által elindított további folyamatokat).

A hibakereső által létrehozott folyamatok (más néven ívott folyamatok) kissé eltérően viselkednek, mint azok a folyamatok, amelyeket a hibakereső nem hoz létre.

A standard halom API használata helyett a hibakereső által létrehozott folyamatok egy speciális hibakeresési halomot használnak. A létrehozott folyamatot a hibakeresési halom helyett a standard halom használatára kényszerítheti a _NO_DEBUG_HEAP környezeti változó vagy a -hd parancssori opció használatával.

Mivel a célalkalmazás a hibakereső gyermekfolyamata, örökli a hibakereső engedélyeit. Ez az engedély lehetővé teheti, hogy a célalkalmazás végrehajtsa azokat a műveleteket, amelyeket egyébként nem tudott végrehajtani. A célalkalmazás például hatással lehet a védett folyamatokra.

WinDbg menü

Ha a WinDbg alvó módban van, új folyamatot hozhat létre a Fájl menü Végrehajtható fájl megnyitása parancsával vagy a CTRL+E billentyűkombináció lenyomásával.

Amikor megjelenik a Végrehajtható fájl megnyitása párbeszédpanel, írja be a végrehajtható fájl teljes elérési útját a Fájlnév mezőbe, vagy a Keresés listában válassza ki a kívánt elérési utat és fájlnevet.

Ha parancssori paramétereket szeretne használni a felhasználói módú alkalmazással, írja be őket az Argumentumok mezőbe. Ha módosítani szeretné a kezdőkönyvtárat az alapértelmezett könyvtárról, írja be a címtár elérési útját a Kezdőkönyvtár mezőbe. Ha azt szeretné, hogy a WinDbg gyermekfolyamatokhoz legyen csatolva, jelölje be a Gyermekfolyamatok hibakeresése jelölőnégyzetet is.

Miután kiválasztotta a beállításokat, válassza a Megnyitás lehetőséget.

Parancssor

A parancssori ablakban új folyamatot hozhat létre a WinDbg indításakor. Használja a következő parancsot:

windbg [-o]ProgramName[Argument]

Az -o beállítás hatására a hibakereső gyermekfolyamatokhoz csatlakozik. Számos más hasznos parancssori lehetőség is rendelkezésre áll. A parancssori szintaxisról további információt a WinDbg Command-Line Beállítások című témakörben talál.

Hibakereső parancsablaka

Ha a WinDbg már hibakeresést végzett egy vagy több folyamaton, létrehozhat egy új folyamatot a Hibakereső parancsablak.create (Folyamat létrehozása) parancsával.

A hibakereső mindig egyszerre több célfolyamatot indít el, kivéve, ha egyes szálak le vannak fagyasztva vagy fel vannak függesztve.

Ha a .create parancs sikeres, a hibakereső a megadott folyamatot hozza létre a következő alkalommal, amikor a hibakereső végrehajtási parancsot ad ki. Ha egy sorban többször is használja ezt a parancsot, a hibakeresőnek a parancs használata során legalább annyi alkalommal kell végrehajtást kérnie.

Az alkalmazás kezdőkönyvtárát a .createdir (Create Process Directory beállítása) paranccsal szabályozhatja a .create előtt. A .createdir -I paranccsal vagy a -noinh parancssori beállítással szabályozhatja, hogy a célalkalmazás örökli-e a hibakereső leíróit.

A gyermekfolyamatok hibakeresését a .childdbg (Debug Child Processes) paranccsal aktiválhatja vagy inaktiválhatja.

Folyamathoz való visszacsatlakozás

Ha a hibakereső nem válaszol vagy lefagy, csatolhat egy új hibakeresőt a célfolyamathoz. Ha többet szeretne tudni arról, hogyan csatolhat hibakeresőt ebben a helyzetben, olvassa el a Célalkalmazás újracsatlakoztatása című témakört.