Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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. |
Felsök | Starta om |
CTRL + SKIFT + F5 |
(Endast användarläge) Startar om målprogrammet. |
|
Felsök | Navigera |
F5 |
Målet exekveras fritt. |
|
Återupptar körningen efter en villkorlig brytpunkt. |
|||
Felsök | Kör hanterat undantag |
Samma som g (Go), förutom att det aktuella undantaget anses vara hanterat. |
||
Felsök | Gå till Ohanterat undantag |
Samma som g (Go), förutom att det aktuella undantaget behandlas som ohanterat. |
||
Felsök | Steg ut |
SHIFT + F11 |
Programmet körs tills den aktuella funktionen är klar. |
|
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. |
|
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). |
|||
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. |
|||
Målobjektet körs tills det når en anropsinstruktion eller en returinstruktion. |
|||
Målet körs tills det når någon form av förgreningsinstruktion, inklusive villkorsstyrda eller ovillkorliga grenar, anrop, returer och systemanrop. |
|||
Målet körs tills det når en returinstruktion. |
|||
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. |
|
Målet körs tills det når den angivna adressen. Alla steg i den här funktionen och kallade funktioner visas. |
|||
(Alla lägen, utom kernelläge, endast på x86-baserade system) Målet körs tills det når nästa greninstruktion. |
|||
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. |
|||
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. |
|||
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. |
|||
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. |
|||
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.