Dela via


Självstudie: Felsöka ett .NET-konsolprogram

I den här handledningen beskrivs de felsökningsverktyg som är tillgängliga i Visual Studio.

Viktigt!

Alla kortkommandon baseras på standardvärdena från Visual Studio. Kortkommandona kan variera, mer information finns i genvägarna Keyboard i Visual Studio.

I denna handledning beskrivs de felsökningsverktyg som är tillgängliga i Visual Studio Code för att arbeta med .NET-appar.

I den här självstudien beskrivs de felsökningsverktyg som är tillgängliga i GitHub Codespaces för att arbeta med .NET appar.

Förutsättningar

Den här handledningen används med konsolappen som du skapar i Skapa ett .NET-konsolprogram.

Använd felsökningsbyggnadskonfiguration

Debug och Release är Visual Studio inbyggda byggkonfigurationer. Du använder debugkonfigurationen för felsökning och releasekonfigurationen för den slutliga distributionen.

I felsökningskonfigurationen kompileras ett program med fullständig symbolisk felsökningsinformation och ingen optimering. Optimeringen komplicerar felsökningen eftersom relationen mellan källkod och genererade instruktioner är mer komplex. Versionskonfigurationen för ett program har ingen symbolisk felsökningsinformation och är helt optimerad.

Som standard använder Visual Studio konfigurationen för felsökningsversion, så du behöver inte ändra den innan du felsöker.

  1. Starta Visual Studio.

  2. Öppna projektet som du skapade i Skapa ett .NET konsolprogram.

    Den aktuella byggkonfigurationen visas i verktygsfältet. Följande verktygsfältsbild visar att Visual Studio har konfigurerats för att kompilera felsökningsversionen av appen:

    Visual Studio verktygsfältet med felsökning markerat

Ange en brytpunkt

En brytpunkt avbryter tillfälligt körningen av programmet innan raden med brytpunkten körs.

  1. Ange en brytpunkt på raden som visar namn, datum och tid genom att klicka i vänstermarginalen i kodfönstret på den raden. Vänstermarginalen är till vänster om radnumren. Andra sätt att ange en brytpunkt är genom att placera markören i kodraden och sedan trycka på F9 eller välja Växlabrytpunkt för > från menyraden.

    Som följande bild visar anger Visual Studio den rad där brytpunkten anges genom att markera den och visa en röd punkt i vänstermarginalen.

    Visual Studio-programfönster med brytpunkt satt

  2. Tryck på F5 för att köra programmet i felsökningsläge. Ett annat sätt att börja felsöka är genom att välja Felsöka>Starta felsökning från menyn.

  3. Ange en sträng i konsolfönstret när programmet frågar efter ett namn och tryck sedan på Retur.

  4. Programkörningen stoppas när den når brytpunkten och innan Console.WriteLine metoden körs. Fönstret Lokalt visar värdena för variabler som definieras i metoden som körs just nu.

    Skärmbild av en brytpunkt i Visual Studio

  1. Starta Visual Studio Code.

  2. Öppna mappen för projektet som du skapade i Skapa ett .NET-konsolprogram.

  3. Öppna filen Program.cs .

  4. Ange en brytpunkt på raden som visar namn, datum och tid genom att klicka på vänstermarginalen i kodfönstret. Vänstermarginalen är till vänster om radnumren. Andra sätt att sätta en brytpunkt är genom att trycka på F9 eller välja Kör>Växla brytpunkt från menyn när raden med koden är markerad.

    Visual Studio Code anger den rad där brytpunkten anges genom att en röd punkt visas i vänstermarginalen.

    Brytpunkt satt

  1. Öppna ditt GitHub Codespace som du skapade i Skapa ett .NET-konsolprogram.

  2. Öppna filen HelloWorld.cs .

  3. Ange en brytpunkt på raden som visar namn, datum och tid genom att klicka på vänstermarginalen i kodfönstret. Vänstermarginalen är till vänster om radnumren. Du kan också ange en brytpunkt genom att trycka på F9 medan kodraden är markerad.

    Brytpunkt satt

Börja felsöka

Programmet stoppas när det når brytpunkten, enligt beskrivningen i föregående avsnitt. Fönstret Lokalt visar värdena för variabler som definieras i metoden som körs just nu.

Debug och Release är .NET inbyggda byggkonfigurationer. Du använder debugkonfigurationen för felsökning och releasekonfigurationen för den slutliga distributionen.

Visual Studio Codes startinställningar använder som standard debug-byggkonfigurationen, så du behöver inte ändra den innan du felsöker.

  1. Öppna felsökningsvyn genom att välja felsökningsikonen på menyn till vänster.

    Öppna fliken Felsök i Visual Studio Code

  2. Välj Kör och Felsök. Om du tillfrågas väljer du C# och sedan C#: Starta startprojekt. Andra sätt att starta programmet i felsökningsläge är genom att trycka på F5 eller välja Kör>starta felsökning från menyn.

    Börja felsöka

  3. Om du uppmanas att välja Starta konfiguration väljer du C#: Felsök aktiv fil.

  4. Välj fliken Felsökningskonsol för att se uppmaningen "Vad är ditt namn?" som programmet visar innan du väntar på ett svar.

    Välj fliken Felsökningskonsol

  5. Ange en sträng i fönstret Felsökningskonsol som svar på uppmaningen om ett namn och tryck sedan på Retur.

    Programkörningen stoppas när den når brytpunkten och innan Console.WriteLine metoden körs. Avsnittet Locals i fönstret Variabler visar värdena för variabler som definieras i den metod som körs för tillfället.

    Brytpunkt nådd, visar lokala variabler

Som standard använder GitHub Codespaces konfigurationen för felsökningsversion, så du behöver inte ändra den innan du felsöker.

  1. Öppna felsökningsvyn genom att välja felsökningsikonen på menyn till vänster.

    Öppna fliken Felsök i Visual Studio Code

  2. Välj Kör och Felsök. Om du tillfrågas väljer du C# som felsökare och väljer sedan C#: Felsöka aktiv fil som startkonfiguration.

  3. Välj fliken Felsökningskonsol för att se uppmaningen "Vad är ditt namn?" som programmet visar innan du väntar på ett svar.

  4. Ange en sträng i fönstret Felsökningskonsol som svar på uppmaningen om ett namn och tryck sedan på Retur.

    Programkörningen stoppas när den når brytpunkten och innan Console.WriteLine metoden körs. Avsnittet Locals i fönstret Variabler visar värdena för variabler som definieras i den metod som körs för tillfället.

    Brytpunkt nådd, visar lokala variabler

Använd fönstret Omedelbart

Med fönstret Omedelbar kan du interagera med det program som du felsöker. Du kan interaktivt ändra värdet för variabler för att se hur det påverkar ditt program.

  1. Om fönstret Immediate inte visas visar du det genom att välja Debug>Windows>Immediate.

  2. Ange name = "Gracie" i fönstret Omedelbart och tryck på Retur .

  3. Ange currentDate = DateTime.Parse("2026-02-05T20:25:00Z").ToUniversalTime() i fönstret Omedelbart och tryck på Retur .

    Fönstret Omedelbar visar värdet för strängvariabeln och egenskaperna för DateTime värdet. Dessutom uppdateras värdena för variablerna i fönstret Lokal .

    Locals och Omedelbara Windows i Visual Studio

  4. Tryck på F5 för att fortsätta programkörningen. Ett annat sätt att fortsätta är genom att välja Felsöka>Fortsätt från menyn.

    De värden som visas i konsolfönstret motsvarar de ändringar du gjorde i fönstret Omedelbart .

  5. Tryck på valfri tangent för att avsluta programmet och sluta felsöka.

Använda felsökningskonsolen

Med fönstret Felsökningskonsol kan du interagera med det program som du felsöker. Du kan ändra värdet för variabler för att se hur det påverkar ditt program.

  1. Välj fliken Felsökningskonsol .

  2. Ange name = "Gracie" i kommandotolken längst ned i felsökningskonsolfönstret och tryck på Retur.

    Ändra variabelvärden

  3. Ange currentDate = DateTime.Parse("2026-01-28T20:54:00Z").ToUniversalTime() längst ned i felsökningskonsolfönstret och tryck på Retur.

    Fönstret Variabler visar de nya värdena för variablerna name och currentDate .

  4. Fortsätt programkörningen genom att välja knappen Fortsätt i verktygsfältet. Ett annat sätt att fortsätta är genom att trycka på F5.

    Fortsätt felsökningen

    Värdena som visas i konsolfönstret motsvarar de ändringar som du har gjort i felsökningskonsolen.

    Terminal som visar de angivna värdena

  5. Tryck på Retur för att avsluta programmet och sluta felsöka.

Ange en villkorsstyrd brytpunkt

Programmet visar strängen som användaren anger. Vad händer om användaren inte anger något? Du kan testa detta med en användbar felsökningsfunktion som kallas villkorlig brytpunkt.

  1. Högerklicka på den röda punkt som representerar brytpunkten. I snabbmenyn väljer du Villkor för att öppna dialogrutan Brytpunktsinställningar . Markera rutan för Villkor om den inte redan är markerad.

    Redigeraren visar panelen för brytpunktsinställningar – C#

  2. För villkorsuttrycket anger du följande kod i textfältet.

    string.IsNullOrEmpty(name)
    
    String.IsNullOrEmpty(name)
    

    Varje gång brytpunkten nås anropar felsökningsprogrammet metoden, och det stoppar endast på denna rad om metodanropet returnerar String.IsNullOrWhiteSpace(name).

    I stället för ett villkorsuttryck kan du ange ett antal träffar, vilket avbryter programkörningen innan en instruktion körs ett angivet antal gånger. Ett annat alternativ är att ange ett filtervillkor som avbryter programkörningen baserat på sådana attribut som trådidentifierare, processnamn eller trådnamn.

  3. Välj Stäng för att stänga dialogrutan.

  4. Starta programmet med felsökning genom att trycka på F5.

  5. Tryck på Retur i konsolfönstret när du uppmanas att ange ditt namn.

  6. Eftersom villkoret du angav (name är antingen null eller String.Empty) har uppfyllts stoppas programkörningen när den når brytpunkten och innan Console.WriteLine metoden körs.

  7. Välj fönstret Lokal , som visar värdena för variabler som är lokala för den metod som körs just nu. I det här fallet Main är den metod som körs för närvarande. Observera att värdet för variabeln name är "", eller String.Empty.

  8. Bekräfta att värdet är en tom sträng genom att ange följande instruktion i fönstret Omedelbart och trycka på Retur. Resultatet är true.

    ? name == String.Empty
    
    ? String.IsNullOrEmpty(name)
    

    Frågetecknet dirigerar det omedelbara fönstret för att utvärdera ett uttryck.

    Omedelbart fönster som returnerar värdet true efter att -instruktionen har körts – C#

  9. Tryck på F5 för att fortsätta programkörningen.

  10. Tryck på valfri tangent för att stänga konsolfönstret och sluta felsöka.

  11. Rensa brytpunkten genom att klicka på punkten i kodfönstrets vänstermarginal. Andra sätt att rensa en brytpunkt är genom att trycka på F9 eller välja Växla brytpunkt för felsökning > medan kodraden är markerad.

  1. Högerklicka (Ctrl-klicka på macOS) på den röda punkt som representerar brytpunkten. I snabbmenyn väljer du Redigera brytpunkt för att öppna en dialogruta där du kan ange ett villkorsuttryck.

    Kontextmeny för brytpunkt

  2. Välj Expression i listrutan, ange följande villkorsuttryck och tryck på Retur.

    String.IsNullOrEmpty(name)
    

    Ange ett villkorsuttryck

    Varje gång brytpunkten nås anropar felsökningsprogrammet metoden, och det stoppar endast på denna rad om metodanropet returnerar String.IsNullOrEmpty(name).

    I stället för ett villkorsuttryck kan du ange ett antal träffar, vilket avbryter programkörningen innan en instruktion körs ett angivet antal gånger. Ett annat alternativ är att ange ett filtervillkor som avbryter programkörningen baserat på sådana attribut som trådidentifierare, processnamn eller trådnamn.

  3. Starta programmet med felsökning genom att trycka på F5.

  4. På fliken Felsökningskonsol trycker du på Retur när du uppmanas att ange ditt namn.

    Eftersom villkoret du angav (name är antingen null eller String.Empty) har uppfyllts stoppas programkörningen när den når brytpunkten och innan Console.WriteLine metoden körs.

    Fönstret Variabler visar att värdet för variabeln name är "", eller String.Empty.

  5. Bekräfta att värdet är en tom sträng genom att ange följande instruktion i felsökningskonsolens prompt och trycka på Retur. Resultatet är true.

    name == String.Empty
    
  6. Välj knappen Fortsätt i verktygsfältet för att fortsätta programkörningen.

  7. Tryck på Retur för att avsluta programmet och sluta felsöka.

  8. Rensa brytpunkten genom att klicka på punkten i kodfönstrets vänstermarginal. Andra sätt att rensa en brytpunkt är genom att trycka på F9 eller välja Kör > Växla Brytpunkt från menyn medan kodraden är markerad.

  9. Om du får en varning om att brytpunktsvillkoret kommer att gå förlorat väljer du Ta bort brytpunkt.

Stega igenom ett program

Visual Studio låter dig också stega rad för rad genom ett program och övervaka dess körning. Vanligtvis anger du en brytpunkt och följer programflödet genom en liten del av programkoden. Eftersom det här programmet är litet kan du gå igenom hela programmet.

  1. Ange en brytpunkt på kodraden som visar uppmaningen "Vad är ditt namn?".

  2. Välj Debugga>Stega in. Ett annat sätt att felsöka en instruktion i taget är genom att trycka på F11.

    Visual Studio markerar och visar en pil bredvid den nästa raden som ska exekveras.

    Visual Studio steg in i metoden – C#

    Nu visar fönstret Locals att matrisen args är tom och namecurrentDate har standardvärden. Dessutom har Visual Studio öppnat ett tomt konsolfönster.

  3. Tryck på F11. Visual Studio markerar instruktionen som innehåller variabeltilldelningen name. Fönstret Locals visar att name är null, och konsolfönstret visar strängen "Vad är ditt namn?".

  4. Svara på uppmaningen genom att ange en sträng i konsolfönstret och trycka på Retur. Konsolen svarar inte och strängen som du angav visas inte i konsolfönstret, men Console.ReadLine metoden samlar ändå in dina indata.

  5. Tryck på F11. Visual Studio markerar instruktionen som innehåller variabeltilldelningen currentDate. Fönstret Locals visar det värde som returneras av anropet till Console.ReadLine metoden. Konsolfönstret visar även strängen som du angav i kommandotolken.

  6. Tryck på F11. Fönstret Lokala visar värdet av variabeln currentDate efter tilldelningen från egenskapen DateTime.Now. Konsolfönstret är oförändrat.

  7. Tryck på F11. Visual Studio anropar metoden Console.WriteLine(String, Object, Object). Konsolfönstret visar den formaterade strängen.

  8. Välj Felsöka>steg ut. Ett annat sätt att stoppa stegvis körning är genom att trycka på Skift+F11.

    Konsolfönstret visar ett meddelande och väntar på att du ska trycka på en nyckel.

  9. Tryck på valfri tangent för att stänga konsolfönstret och sluta felsöka.

Visual Studio Code kan också låta dig stega rad för rad genom ett program och övervaka programmets körning. Vanligtvis anger du en brytpunkt och följer programflödet genom en liten del av programkoden. Eftersom det här programmet är litet kan du gå igenom hela programmet.

  1. Ange en brytpunkt på kodraden som visar uppmaningen "Vad är ditt namn?".

  2. Tryck på F5 för att börja felsöka.

    Visual Studio Code markerar brytpunktslinjen.

    Nu visar fönstret Variabler att matrisen args är tom och namecurrentDate har standardvärden.

  3. Välj Steg in i verktygsfältet Felsökning eller tryck på F11.

    Step-Into-knappen

    Visual Studio Code markerar nästa rad.

  4. Visual Studio Code kör Console.WriteLine för namnprompten och markerar nästa körningsrad. Nästa rad är Console.ReadLine för name. Fönstret Variabler är oförändrat och på fliken Terminal visas uppmaningen "Vad är ditt namn?".

  5. Välj Steg in i eller tryck på F11.

    Visual Studio Code markerar variabeltilldelningen name. Fönstret Variabler visar att name fortfarande är null.

  6. Svara på uppmaningen genom att ange en sträng på fliken Terminal och trycka på Retur.

    Fliken Felsökningskonsol kanske inte visar den sträng som du anger när du anger den, men Console.ReadLine metoden samlar in dina indata.

  7. Välj Steg in i eller tryck på F11.

    Visual Studio Code markerar variabeltilldelningen currentDate. Fönstret Variabler visar det värde som returneras av anropet till Console.ReadLine metoden. Fliken Terminal visar strängen som du angav i kommandotolken.

  8. Välj Steg in i eller tryck på F11.

    Fönstret Variabler visar värdet för variabeln currentDate efter tilldelningen DateTime.Now från egenskapen.

  9. Välj Steg in i eller tryck på F11.

    Visual Studio Code anropar metoden Console.WriteLine(String, Object, Object). Konsolfönstret visar den formaterade strängen.

  10. Välj Steg ut eller tryck på Skift+F11.

    Step-Out-knappen

    Terminalen visar "Tryck på valfri tangent för att avsluta..."

  11. Tryck på valfri tangent för att avsluta programmet.

Använda Release-byggkonfiguration

När du har testat Debug-versionen av din applikation bör du också kompilera och testa Release-versionen. Versionsversionen innehåller kompilatoroptimeringar som ibland kan påverka beteendet för ett program negativt. Kompilatoroptimeringar som är utformade för att förbättra prestanda kan till exempel skapa konkurrensvillkor i flertrådade program.

Om du vill skapa och testa Release-versionen av ditt konsolprogram, ändrar du byggkonfigurationen i verktygsfältet från Felsök till Release.

default Visual Studio verktygsfält med versionen markerad

När du trycker på F5 eller väljer Build Solution från menyn Build kompilerar Visual Studio versionen av programmet. Du kan testa det på samma sätt som du gjorde felsökningsversionen.

Om du vill skapa och testa versionen av konsolprogrammet öppnar du terminalen och kör följande kommando:

dotnet run --configuration Release

Kör följande kommando i terminalen för att skapa och testa versionen av konsolprogrammet:

dotnet run --configuration Release HelloWorld.cs

Nästa steg

I den här självstudien använde du felsökningsverktyg. I nästa handledning publicerar du en distribuerbar version av appen.