Dela via


Kontrollera målet

När du felsöker ett målprogram i användarläge eller en måldator i kernelläge kan målet köras eller stoppas.

När felsökningsprogrammet ansluter till en målenhet i kärnläge lämnar det målenheten igång, om du inte använder kommandoradsalternativet-b, om målsystemet har slutat svara (d.v.s. kraschat), eller om målsystemet fortfarande är stoppat på grund av en tidigare åtgärd vid kernelfelsökning.

När felsökningsprogrammet startar eller ansluter till ett mål i användarläge stoppar felsökningsprogrammet omedelbart målet, såvida du inte använder kommandoradsalternativet -g . Mer information finns i Inledande brytpunkt.

När målet körs

När målet är i drift är de flesta felsökningsåtgärder inte tillgängliga.

Om du vill stoppa en process som körs, kan du utfärda ett Break-kommando. Det här kommandot gör att felsökaren bryter sig in i målet. Felsökningsprogrammet stoppar alltså målet och all kontroll ges till felsökningsprogrammet. Programmet kanske inte slutar fungera omedelbart. Om alla trådar för närvarande kör systemkod, eller om de är i en vänteåtgärd, avbryts programmet först efter att kontrollen har återgått till programmets kod.

Om ett mål som körs stöter på ett undantag, om vissa händelser inträffar, om en brytpunkt nås eller om programmet stängs normalt, bryter sig målet in i felsökningsprogrammet. Den här åtgärden stoppar målet och ger all kontroll till felsökningsprogrammet. Ett meddelande visas i fönstret Felsökningskommando och beskriver felet, händelsen eller brytpunkten.

När målet stoppas

Om du vill starta eller kontrollera målets körning kan du göra följande:

  • Om du vill att programmet ska börja köras utfärdar du go-kommandot .

  • Om du vill gå igenom programmet en instruktion i taget använder du kommandona Step Into eller Step Over . Om ett funktionsanrop inträffar, går Step Into in i funktionen och fortsätter att gå igenom varje instruktion. Step Over behandlar funktionsanropet som ett enda steg. När felsökningsprogrammet är i sammansättningsläge sker stegning en datorinstruktion i taget. När felsökningsprogrammet är i källkodsläge utförs stegningen en källkodsrad i taget.

  • Om du vill slutföra den aktuella funktionen och stoppa när returen inträffar använder du kommandona Step Out eller Trace och Watch . Kommandot Step Out fortsätter tills den aktuella funktionen slutar. Trace and Watch fortsätter tills den aktuella funktionen slutar och visar även en sammanfattning av funktionens anrop. Du måste dock utfärda kommandot Trace and Watch på den första instruktionen för funktionen i fråga.

  • Om ett undantag inträffar kan du använda kommandona Go with Exception Handled och Go with Exception Not Handled för att återuppta körningen och kontrollera statusen för undantaget. (Mer information om undantag finns i Kontrollera undantag och händelser.)

  • (Endast WinDbg) Om du väljer en rad i fönstret Disassembly eller ett källfönster och sedan använder kommandot Kör till markör , körs programmet tills det påträffar den valda raden.

  • (Endast användarläge) Om du vill stänga målprogrammet och starta om det från början använder du kommandot Starta om . Du kan bara använda det här kommandot med en process som felsökningsprogrammet skapade. När processen har startats om går den omedelbart in i felsökningsprogrammet.

  • (Endast WinDbg) Om du vill stänga målprogrammet och rensa felsökningsprogrammet använder du kommandot Stoppa felsökning . Med det här kommandot kan du börja felsöka ett annat mål.

Kommandoformulär

De flesta kommandon för att starta eller styra målets körning finns som textkommandon, menykommandon, verktygsfältsknappar och kortkommandon. Som grundläggande textkommandon kan du använda dessa kommandon i CDB, KD eller WinDbg. (Textformen för kommandona stöder ofta ytterligare alternativ, till exempel att ändra platsen för programräknaren eller köra ett fast antal instruktioner.) Du kan använda menykommandon, verktygsfältsknappar och kortkommandon i WinDbg.

Du kan använda kommandona i följande formulär.

Kommando WinDbg-kommando WinDbg-kortkommandon Effekt

Felsök | Kör till markör

F7

CTRL + F10

(Endast WinDbg) Körs tills den når den rad som markören markerar.

Felsök | Sluta felsöka

SHIFT + F5

Stoppar all felsökning och stänger målet.

(endast CDB/KD) CTRL+C

Felsök | Paus

CTRL + BREAK

Körningen stoppas och felsökningsprogrammet bryter sig in i målet.

.restart (Starta om målapplikation)

Felsök | Starta om

CTRL + SKIFT + F5

(Endast användarläge) Startar om målprogrammet.

g (Go)

Felsök | Navigera

F5

Målet exekveras fritt.

gc (Gå från villkorsstyrd brytpunkt)

Återupptar körningen efter en villkorlig brytpunkt.

gh (Gå med hanterat undantag)

Felsök | Kör hanterat undantag

Samma som g (Go), förutom att det aktuella undantaget anses vara hanterat.

gn (Gå med undantag inte hanterat)

Felsök | Gå till Ohanterat undantag

Samma som g (Go), förutom att det aktuella undantaget behandlas som ohanterat.

gu (Gå upp)

Felsök | Steg ut

SHIFT + F11

Programmet körs tills den aktuella funktionen är klar.

p (Steg)

Felsök | Steg över

F10

Target utför en instruktion. Om den här instruktionen är ett funktionsanrop körs den funktionen som ett enda steg.

pa (Steg till adress)

Målet körs tills det når den angivna adressen. Alla steg i den här funktionen visas (men steg i kallade funktioner visas inte).

pc (Steg till nästa samtal)

Målet körs till nästa anropsinstruktion. Om den aktuella instruktionen är en anropsinstruktion körs det här anropet helt och körningen fortsätter till nästa anrop.

pct (steg till nästa samtal eller retur)

Målobjektet körs tills det når en anropsinstruktion eller en returinstruktion.

ph (Steg till nästa förgreningsinstruktion)

Målet körs tills det når någon form av förgreningsinstruktion, inklusive villkorsstyrda eller ovillkorliga grenar, anrop, returer och systemanrop.

pt (steg till nästa retur)

Målet körs tills det når en returinstruktion.

t (Trace)

Felsök | Gå in i

F11

F8

Target utför en instruktion. Om den här instruktionen är ett funktionsanrop, spårar felsökningsprogrammet till det anropet.

ta (Spåra till adress)

Målet körs tills det når den angivna adressen. Alla steg i den här funktionen och kallade funktioner visas.

tb (Spåra till nästa förgrening)

(Alla lägen, utom kernelläge, endast på x86-baserade system) Målet körs tills det når nästa greninstruktion.

tc (Spåra till nästa anrop)

Målet körs fram till nästa anropsinstruktion. Om den aktuella instruktionen är en samtalsinstruktion spåras instruktionen tills ett nytt anrop nås.

tct (Spåra till nästa samtal eller retur)

Målet körs tills det når en anropsinstruktion eller en returinstruktion. Om den aktuella instruktionen är en anropsinstruktion eller returinstruktion spåras instruktionen tills ett nytt anrop eller en retur nås.

th (Spåra till nästa förgreningsinstruktion)

Målet körs tills det når någon form av förgreningsinstruktion, inklusive villkorsstyrda eller ovillkorliga grenar, anrop, returer och systemanrop. Om den aktuella instruktionen är en förgreningsinstruktion, spåras den tills en ny förgreningsinstruktion nås.

tt (Spåra till nästa retur)

Målet körs tills det når en returinstruktion. Om den aktuella instruktionen är en returinstruktion spåras den tills en ny retur har nåtts.

wt (Spårning och bevakning av data)

Målet körs tills hela den angivna funktionen har slutförts. Statistik visas sedan.

Mer information om hur du startar om måldatorn finns i Krascha och starta om måldatorn.

Kommandoradsalternativ

Om du inte vill att programmet ska stoppas omedelbart när det startas eller läses in använder du CDB eller WinDbg tillsammans med kommandoradsalternativet -g . Mer information om den här situationen finns i Inledande brytpunkt.

CDB och WinDbg stöder även kommandoradsalternativet-G. Det här alternativet gör att felsökningssessionen avslutas om programmet slutförs korrekt.

Följande kommando försöker köra programmet från början till slut, och felsökningsprompten visas endast om ett fel inträffar.

cdb -g -G ApplicationName 

Du kan använda kommandoradsalternativet-pt för att ange tidsgränsen för avbrott. Det finns vissa problem som kan göra att målet inte kan kommunicera med felsökningsprogrammet. Om ett brytkommando utfärdas och felsökaren inte kan bryta sig in i målet efter den här tiden visar felsökningsprogrammet meddelandet "Tidsgräns för inbrott".

I det här läget slutar felsökningsprogrammet att försöka komma åt målet. I stället pausar felsökningsprogrammet målet och gör att du kan undersöka (men inte kontrollera) målprogrammet.

Standardtidsgränsen är 30 sekunder.