Så här fungerar .NET-felsökningsprogrammet i Visual Studio Code

Slutförd

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#.

Screenshot of Visual Studio Code prompt to install the C# extension.

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.

Screenshot of Visual Studio Code prompt to add required assets to build and debug your .NET project.

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.

Screenshot of a breakpoint added in the Visual Studio Code editor window.

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).

Screenshot of setting a conditional breakpoint in Visual Studio Code.

Ö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.

Screenshot of Visual Studio Code debugger overview.

  1. Startkontroller för felsökningsprogram
  2. Tillstånd för variabler
  3. Tillstånd för bevakade variabler
  4. Aktuell anropsstack
  5. Brytpunkter
  6. Körningskontroller
  7. Aktuellt körningssteg
  8. Felsökningskonsol

Startkontroller för felsökningsprogram

Längst upp i sidofältet finns startkontrollerna:

Screenshot of Visual Studio Code debug sidebar controls.

  1. Starta felsökning.
  2. Välj den aktiva startkonfigurationen.
  3. Redigera filen launch.json. Skapa den om du behöver.
  4. Ö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.

Screenshot of variable hover during debugging.

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.

Screenshot of Visual Studio Code debugger execution controls.

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.

Screenshot of Visual Studio Code debug console.

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.

  1. Öppna .vscode/launch.json.

  2. Ändra inställningen console till integratedTerminal från:

    "console": "internalConsole",
    

    Till:

    "console": "integratedTerminal",
    
  3. 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.