A cél szabályozása

Miközben egy célalkalmazást felhasználói módban vagy egy célszámítógépet kernel módban hibakeres, a cél fut vagy leállítva van.

Amikor a hibakereső kernel módú célhoz csatlakozik, a hibakereső hagyja futni a célt, kivéve, ha a -bparancssori beállítást használja, a célrendszer nem válaszol (vagyis összeomlott), vagy a célrendszer egy korábbi kernel-hibakeresési művelet miatt továbbra is leáll.

Amikor a hibakereső elindít vagy csatlakozik egy felhasználói módú célhoz, a hibakereső azonnal leállítja a célhelyet, kivéve, ha a -g parancssori beállítást használja. További információ: Kezdeti töréspont.

Amikor a célpont fut

Amikor a cél fut, a legtöbb hibakereső művelet nem érhető el.

Ha le szeretne állítani egy futó célpontot, kiadhat egy Törés parancsot. Ez a parancs azt eredményezi, hogy a hibakereső betörik a célba. Vagyis a hibakereső leállítja a célhelyet, és minden vezérlést a hibakereső kap. Előfordulhat, hogy az alkalmazás nem szakad meg azonnal. Ha például az összes szál éppen rendszerkódot hajt végre, vagy várakozási műveletet hajt végre, az alkalmazás csak akkor szakad meg, ha a vezérlés visszakerült az alkalmazás kódjába.

Ha egy futó cél kivételt tapasztal, ha bizonyos események történnek, töréspontot talál, vagy ha az alkalmazás normálisan bezárul, a cél a hibakeresőbe törik. Ez a művelet leállítja a célt, és minden vezérlést megad a hibakeresőnek. A Hibakereső parancs ablakban megjelenik egy üzenet, amely leírja a hibát, az eseményt vagy a töréspontot.

Amikor a célt leállítják

A cél végrehajtásának elindításához vagy szabályozásához tegye a következőket:

  • Az alkalmazás futtatásának megkezdéséhez adja ki a Go parancsot.

  • Ha egyszerre egy utasítást szeretne végigvezetni az alkalmazáson, használja a Step Into vagy Step Over parancsokat. Ha függvényhívás történik, a Step Into beírja a függvényt, és folytatja az egyes utasítások végiglépését. A Step Over egyetlen lépésként kezeli a függvényhívást. Ha a hibakereső összeszerelési módban van, a léptetés egyszerre egy gépi utasítással történik. Ha a hibakereső forrás módban van, a léptetés egyszerre egy forrássoron történik.

  • Ha be szeretné fejezni az aktuális függvényt, és le szeretné állítani a visszatérést, használja a Step Out vagy a Trace and Watch parancsot. A Kilépés parancs az aktuális függvény végéig folytatódik. A Nyomkövetés és a Figyelés addig folytatódik, amíg az aktuális függvény véget nem ér, és megjeleníti a függvény hívásainak összegzését is. A Trace and Watch parancsot azonban ki kell adnia a szóban forgó függvény első utasítására.

  • Ha kivétel történik, az Ugrás kivétellel kezelve és az Ugrás kivétellel nem kezelve parancsokkal folytathatja a végrehajtást, és szabályozhatja a kivétel állapotát. (A kivételekről további információt a Kivételek és események szabályozása című témakörben talál.)

  • (Csak WinDbg) Ha kijelöl egy sort a Szétszerelés ablakban vagy a Forrás ablakban , majd a Futtatás a kurzorhoz parancsot használja, a program addig fut, amíg a kijelölt sorba nem ütközik.

  • (Csak felhasználói mód) A célalkalmazás bezárásához és újraindításához használja az Újraindítás parancsot. Ezt a parancsot csak a hibakereső által létrehozott folyamattal használhatja. A folyamat újraindítása után azonnal a hibakeresőbe kerül.

  • (Csak WinDbg) A célalkalmazás bezárásához és a hibakereső törléséhez használja a Hibakeresés leállítása parancsot. Ez a parancs lehetővé teszi egy másik cél hibakeresését.

Parancsűrlapok

A cél végrehajtásának elindítására vagy vezérlésére szolgáló parancsok többsége szövegparancsként, menüparancsként, eszköztárgombként és billentyűparancsként létezik. Alapszintű szöveges parancsként ezeket a parancsokat a CDB, a KD vagy a WinDbg alkalmazásban is használhatja. (A parancsok szöveges formája gyakran támogat további lehetőségeket, például a programszámláló helyének megváltoztatását vagy rögzített számú utasítás végrehajtását.) A WinDbg menüparancsait, eszköztárgombjait és billentyűparancsait használhatja.

A parancsokat az alábbi űrlapokon használhatja.

Parancs WinDbg parancs WinDbg billentyűparancsok Hatás

Hibakeresés | Futtatás a kurzorhoz

F7

CTRL + F10

(Csak WinDbg) Addig hajtja végre, amíg el nem éri azt a vonalat, amelyet a kurzor jelöl.

Hibakeresés | Hibakeresés leállítása

SHIFT + F5

Leállítja az összes hibakeresést, és bezárja a célpontot.

(csak CDB/KD) CTRL+C

Hibakeresés | Megszakítás

CTRL + BREAK

A végrehajtás leáll, és a hibakereső betör a célba.

.restart (Célalkalmazás újraindítása)

Hibakeresés | Újraindítás

CTRL + SHIFT + F5

(Csak felhasználói mód) Újraindítja a célalkalmazást.

g (Go)

Hibakeresés | Futtatás

F5

A célfolyamat szabadon működik.

gc (Ugrás a feltételes töréspontról)

A feltételes töréspont után folytatja a végrehajtást.

gh (Menjen a Kezelt Kivétellel)

Hibakeresés | Go Handled Exception

Ugyanaz, mint a g (Go), azzal a kivétellel, hogy a rendszer az aktuális kivételt kezeli.

gn (Go with Exception Not Handled)

Hibakeresés | Kezeletlen kivétel

Ugyanaz, mint a g (Go), azzal a kivétellel, hogy az aktuális kivétel kezeletlenként van kezelve.

gu (Ugrás felfelé)

Hibakeresés | Kilép

SHIFT + F11

A cél addig fut, amíg az aktuális függvény be nem fejeződik.

p (Lépés)

Hibakeresés | Átlépés

F10

A cél egy utasítást hajt végre. Ha ez az utasítás függvényhívás, a függvény egyetlen lépésben lesz végrehajtva.

pa (Lépés a címhez)

A program addig fut, amíg el nem éri a megadott címet. A függvény minden lépése megjelenik (de az úgynevezett függvények lépései nem).

pc (Következő hívásra lépés)

A cél végrehajtódik a következő hívás utasításig. Ha az aktuális utasítás egy hívásutasítás , a rendszer teljesen végrehajtja ezt a hívást, és a végrehajtás a következő hívásig folytatódik.

pct (Lépés a következő híváshoz vagy visszatéréshez)

A cél addig fut, amíg el nem éri a hívási utasítást vagy a visszatérési utasítást.

ph (Lépés a következő elágaztatási utasításhoz)

A célfolyamat végrehajtódik addig, amíg bármilyen elágazási utasítást elér, beleértve a feltételes vagy feltétel nélküli elágazásokat, hívásokat, visszatéréseket és rendszerhívásokat.

pt (Lépés a következő visszatéréshez)

A célprogram addig fut, amíg el nem éri a return utasítást.

t (Nyomkövetés)

Hibakeresés | Belépés

F11

F8

A cél egy utasítást hajt végre. Ha ez az utasítás függvényhívás, a hibakereső ebbe a hívásba lép.

ta (Nyomkövetés a címhez)

A cél addig fut, amíg el nem éri a megadott címet. A függvény és az úgynevezett függvények minden lépése megjelenik.

tb (Nyomkövetési útvonal a következő ágra)

(Kernel mód kivételével minden más mód csak x86-alapú rendszereken fut) A program addig fut, amíg el nem éri a következő águtasítást.

tc (Nyomkövetés a következő hívásig)

A célpont a következő hívási utasításig fut. Ha az aktuális utasítás egy hívásutasítás, az utasítást nyomon követik, amíg elér egy új hívást.

tct (Nyomkövetés a következő hívásra vagy visszatérésre)

A cél addig fut, amíg el nem éri a hívási utasítást vagy a visszatérési utasítást. Ha az aktuális utasítás hívásutasítás vagy visszatérési utasítás, akkor azt addig követjük nyomon, amíg el nem érünk egy új hívásutasítást vagy visszatérési utasítást.

th (Nyomkövetés a következő elágaztatási utasításig)

A célfolyamat addig fut, amíg eléri bármilyen elágazási utasítást, beleértve a feltételes és feltétel nélküli ágakat, hívásokat, visszatéréseket és rendszerhívásokat. Ha az aktuális utasítás elágaztatási utasítás, az utasítás egészen addig lesz nyomon követve, amíg el nem éri az új elágaztatási utasítást.

tt (Nyomkövetés a következő visszatérési ponthoz)

A cél addig fut, amíg el nem éri a return utasítást. Ha az aktuális utasítás egy visszatérési utasítás, az utasítást nyomon követjük addig, amíg el nem érünk egy új visszatérési utasítást.

wt (Nyomkövetési és figyelőadatok)

Az utasítás addig fut, amíg a teljes megadott függvény be nem fejeződik. Ezután megjelennek a statisztikák.

A célszámítógép újraindításáról további információt a célszámítógép összeomlása és újraindítása című témakörben talál.

Command-Line beállítások

Ha nem szeretné, hogy az alkalmazás azonnal leálljon, amikor elindul vagy betöltődik, használja a CDB-t vagy a WinDbg-t a -g parancssori beállítással együtt. A helyzetről további információt a Kezdeti töréspont című témakörben talál.

A CDB és a WinDbg is támogatja a -Gparancssori lehetőséget. Ezzel a beállítással a hibakeresési munkamenet befejeződik, ha az alkalmazás megfelelően befejeződött.

Az alábbi parancs az elejétől a végéig megpróbálja futtatni az alkalmazást, és a hibakereső parancssora csak hiba esetén jelenik meg.

cdb -g -G ApplicationName 

A -ptparancssori kapcsolóval beállíthatja a megszakítási időtúllépést. Bizonyos problémák miatt a cél nem tud kommunikálni a hibakeresővel. Amennyiben ki van adva egy törésparancs, és a hibakereső nem tudja megállítani a célt az adott időn belül, a hibakereső egy "Szünetkérés időtúllépés" üzenetet jelenít meg.

Ezen a ponton a hibakereső abbahagyja a próbálkozást, hogy betörjön a célpontba. Ehelyett a hibakereső szünetelteti a célalkalmazást, és lehetővé teszi a célalkalmazás vizsgálatát (de nem vezérlését).

Az alapértelmezett időtúllépés 30 másodperc.