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


User-Mode-folyamat hibakeresése CDB használatával

A CDB használatával egy futó folyamathoz csatolhat, vagy új folyamathoz hozhat létre és csatolhat.

Csatolás futó folyamathoz

Parancssor

A parancssori ablakban egy futó folyamathoz csatolhatja a CDB indításakor. Használja az alábbi parancsok egyikét:

  • cdb -pProcessID
  • cdb -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 CDB Command-Line Beállítások című témakörben talál.

CDB-parancsablak

Ha a hibakereső már hibakeresést végzett egy vagy több folyamaton, a .attach (Csatolás a folyamathoz) paranccsal 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 csatolja 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.

Csatolás futó folyamathoz nem invazívan

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.

Parancssor

Ha nem szeretne hibakeresést végezni egy futó folyamaton a CDB parancssorából, adja meg a -pv lehetőséget, a -p lehetőséget és a folyamatazonosítót az alábbi szintaxisban.

cdb -pv -pProcessID

Vagy ha nem szeretne hibakeresést végezni egy futó folyamatban a folyamat nevének megadásával, használja inkább az alábbi szintaxist.

cdb -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 CDB Command-Line Beállítások című témakörben talál.

CDB-parancsablak

Ha a hibakereső már aktív, a .attach -v (Csatolás a folyamathoz) paranccsal nem invazív módon hajthat végre hibakeresést 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.

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 CDB elindíthat egy felhasználói módú alkalmazást, majd hibakeresést végezhet az alkalmazásban. 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.

A parancssori ablakban új folyamatot hozhat létre a CDB indításakor. Adja meg a következő parancsot.

cdb [-o]ProgramName[Argumentumok]

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 CDB Command-Line Beállítások című témakörben talál.

Ha a hibakereső már hibakeresést végzett egy vagy több folyamaton, létrehozhat egy új folyamatot a .create (Folyamat létrehozása) parancs beírásá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ó újracsatlakozá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.