Så här fungerar .NET-felsökningsprogrammet i Visual Studio Code
Som du såg i den föregående lektionen kan du kontrollera programkörningen och observera programtillståndet med hjälp av ett felsökningsprogram. I det här avsnittet lär du dig hur du gör detta i Visual Studio Code.
Vi ska börja med att titta på hur du konfigurerar felsökningsprogrammet i Visual Studio Code så att du kan använda det med .NET.
Konfigurera .NET-felsökningsprogrammet i Visual Studio Code
Första gången du öppnar en C#-fil i Visual Studio Code uppmanas du att installera rekommenderade tillägg för C#.
C#-tillägget installeras och ett till meddelande visas som uppmanar dig att lägga till nödvändiga resurser för att skapa och felsöka ditt projekt.
Kommentar
C#-språkstöd i Visual Studio Code är en valfri installation från Marketplace. Visual Studio Code uppmanar dig att installera det här tillägget när du öppnar en C#-fil om du inte redan har gjort det. Om du har problem med att skapa eller felsöka ett .NET-program i Visual Studio Code kontrollerar du att projektet har nödvändiga resurser för C#-språkstöd.
Brytpunkter
Som du såg i föregående lektion kan du använda ett felsökningsprogram för att analysera och kontrollera hur ett program körs. När du startar felsökningsprogrammet i Visual Studio Code körs din kod direkt. Eftersom koden körs snabbt måste du ha möjlighet att pausa programmet vid varje instruktion. Du ska använda brytpunkter för att göra det.
Du kan lägga till en brytpunkt i Visual Studio Code genom att klicka på vänster sida av radnumret på den rad som du vill bryta. En röd cirkel bör visas när brytpunkten har aktiverats. Om du vill ta bort det väljer du den röda cirkeln igen.
Om du lägger till en brytpunkt genom att högerklicka kan du även välja Lägg till villkorsstyrd brytpunkt. Detta är en särskild typ av brytpunkt som gör att du kan ange ett villkor för att avbryta körningen. Den här brytpunkten aktiveras endast när det angivna villkoret uppfylls. Du kan också ändra en befintlig brytpunkt genom att högerklicka på den och välja Edit Breakpoint (Redigera brytpunkt).
Översikt över felsökningsprogrammet i Visual Studio Code
När du har angett brytpunkter och startat appen visas nya informationspaneler och kontroller på skärmen.
- Startkontroller för felsökningsprogram
- Tillstånd för variabler
- Tillstånd för bevakade variabler
- Aktuell anropsstack
- Brytpunkter
- Körningskontroller
- Aktuellt körningssteg
- Felsökningskonsol
Startkontroller för felsökningsprogram
Längst upp i sidofältet finns startkontrollerna:
- Starta felsökning.
- Välj den aktiva startkonfigurationen.
- Redigera filen
launch.json
. Skapa den om du behöver. - Öppna felsökningsterminalen.
Visa och redigera variablernas tillstånd
När du analyserar orsaken till ett programfel kan du titta på variabeltillståndet för att leta efter oväntade ändringar. Du kan göra det med panelen Variabler.
Dina variabler visas sorterade efter omfång:
- Lokala variabler är tillgängliga i det aktuella omfånget, vanligtvis i den aktuella funktionen.
- Globala variabler är tillgängliga överallt i ditt program. Systemobjekt från JavaScript-körningen ingår också, så bli inte förvånad om det finns mycket att gå igenom där.
- Omslutningsvariabler är tillgängliga från den aktuella omslutningen, om sådan finns. En omslutning kombinerar det lokala omfånget för en funktion med omfånget från den yttre funktion som den tillhör.
Du kan visa mer information om omfång och variabler genom att välja pilen. När du utvecklar objekt kan du se alla egenskaper som definierats i objektet.
Det går att ändra en variabels värde i farten genom att dubbelklicka på variabeln.
Genom att hovra över en funktionsparameter eller en variabel direkt i redigeringsfönstret kan du också titta på dess värde.
Bevaka variabler
Det kan vara tråkigt att söka efter ett variabeltillstånd varje gång du vill spåra det över tid eller olika funktioner. Då är panelen Bevaka praktisk.
Du kan välja plusknappen för att ange ett variabelnamn eller ett uttryck att titta på. Alternativt kan du högerklicka på en variabel i panelen Variables (Variabler) och välja Add to watch (Lägg till i bevakning).
Alla uttryck i bevakningspanelen uppdateras automatiskt när koden körs.
Anropsstack
Varje gång ditt program kommer till en funktion läggs en post till i anropsstacken. När ditt program blir mer komplext och du har funktioner som anropas i funktioner flera gånger representerar anropsstacken spåret av funktionsanrop.
Det är användbart för att hitta orsaken till ett undantag. Om det uppstår en oväntad krasch i programmet visas ofta något som liknar det här i konsolen:
Unhandled exception. System.IndexOutOfRangeException: Index was outside the bounds of the array.
at OrderProcessor.OrderQueue.ProcessNewOrders(String[] orderIds) in C:\Users\Repos\OrderProcessor\OrderQueue.cs:line 12
at OrderProcessor.Program.Main(String[] args) in C:\Users\Repos\OrderProcessor\Program.cs:line 9
Gruppen med at [...]
-rader nedanför felmeddelandet kallas stackspårning. Stackspårningen anger namnet och ursprunget för varje funktion som anropades innan undantaget uppstod. Det kan vara lite svårt att dechiffrera, eftersom det även innehåller interna funktioner från .NET-körningen.
Det är här som panelen Anropsstack Visual Studio Code kommer till pass. Som standard filtrerar den bort oönskad information och visar bara de relevanta funktionerna från din egen kod. Du kan sedan nysta upp anropsstacken för att ta reda på var undantaget kom från.
Panelen Brytpunkter
På panelen Brytpunkter kan du se och hantera alla brytpunkter som du lagt till i koden. Du kan även växla alternativ för att bryta vid fångade eller ej fångade undantag. Du kan använda panelen Brytpunkter för att undersöka programtillståndet och spåra orsaken till ett undantag med hjälp av anropsstacken när det inträffar.
Styra körningen
Du kan kontrollera körningsflödet för ditt program med hjälp av dessa kontroller.
Kontrollerna från vänster till höger är:
- Fortsätt eller pausa körningen: Om körningen pausas fortsätter den tills nästa brytpunkt har nåtts. Om programmet körs växlar knappen till en pausknapp som du kan pausa körningen med.
- Steg över: Kör nästa kodsats i den aktuella kontexten.
- Stega in i: Som Steg över, men om nästa instruktion är ett funktionsanrop går du vidare till den första kodsatsen för den här funktionen (samma som
step
kommandot). - Steg ut: Om du är inne i en funktion kör du den återstående koden för den här funktionen och hoppar tillbaka till -instruktionen efter det första funktionsanropet
out
(samma som kommandot). - Starta om: Starta om programmet från början.
- Stoppa: Avsluta körningen och avsluta felsökningsprogrammet.
Använda felsökningskonsolen
Du kan visa eller dölja felsökningskonsolen genom att välja Ctrl+Skift+Y för Windows och Linux. Välj Cmd + Skift + Y i Mac. Du kan använda felsökningskonsolen för att visualisera programkonsolloggarna. Du kan också använda den för att utvärdera uttryck eller köra kod i det aktuella körningsinnehållet, till exempel kommandon eller variabelnamn i det inbyggda .NET-felsökningsprogrammet.
Du kan ange ett .NET-uttryck i indatafältet längst ned i felsökningskonsolen och sedan välja Retur för att utvärdera det. Resultatet visas direkt i konsolen.
Med hjälp av felsökningskonsolen kan du snabbt kontrollera ett variabelvärde, testa en funktion med olika värden eller ändra det aktuella tillståndet.
Kommentar
Felsökningskonsolen är mycket användbar för att köra och utvärdera .NET-kod, men det kan vara lite förvirrande när du försöker köra eller felsöka ett .NET-konsolprogram eftersom felsökningskonsolen inte accepterar terminalindata för ett program som körs.
Du kan använda den integrerade terminalen (ett av fönstren i Visual Studio Code) eller en extern terminal för att hantera terminalindata under felsökningen. I den här självstudien ska du använda den integrerade terminalen.
Öppna .vscode/launch.json.
Ändra inställningen
console
tillintegratedTerminal
från:"console": "internalConsole",
Till:
"console": "integratedTerminal",
Spara dina ändringar.
I nästa lektion lär du dig hur du använder felsökningsprogrammet för att korrigera buggen i Fibonacci-koden vi tittade på tidigare.