Kommentar
Å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.
Den här artikeln beskriver funktionerna i Visual Studio-felsökningsprogrammet i en stegvis genomgång. Om du vill ha en vy på högre nivå över felsökningsfunktionerna kan du läsa Översikt över Visual Studio-felsökningsprogrammet. När du felsöker din app innebär det vanligtvis att du kör ditt program med felsökningsprogrammet kopplat. När du gör den här uppgiften tillhandahåller felsökningsprogrammet många sätt att se vad din kod gör när den körs.
- Stega igenom koden och titta på de värden som lagras i variabler.
- Ställ in klockor på variabler för att se när värden ändras.
- Granska körvägen för din kod för att se om en kodgren av koden körs.
Om den här övningen är första gången du försöker felsöka kod kanske du vill läsa Felsökning för absoluta nybörjare.
Även om demonstrationsappen i den här artikeln använder Visual Basic gäller de flesta funktionerna för C#, C++, F#, Python, JavaScript och andra språk som stöds av Visual Studio. F# stöder inte Edit-and-continue. F# och JavaScript stöder inte fönstret Autos . Skärmbilderna finns i Visual Basic.
I den här handledningen kommer du att:
- Starta felsökningsprogrammet och träffa brytpunkter
- Lär dig kommandon för att stega igenom kod i felsökningsprogrammet
- Granska variabler i datatips och felsökningsfönster
- Granska anropsstacken
Förutsättningar
Du måste ha Visual Studio installerat, inklusive arbetsbelastningen .NET Core-plattformöverskridande utveckling.
- Om du behöver installera Visual Studio, för en kostnadsfri version, se Visual Studio-nedladdningar.
- Om du behöver installera arbetsbelastningen men redan har Visual Studio går du till Verktyg>Hämta verktyg och funktioner..., som öppnar Installationsprogrammet för Visual Studio. Välj arbetsbelastningen för .NET-skrivbordsutveckling och välj då Ändra.
Skapa ett projekt
Skapa först ett .NET Core-konsolprogramprojekt. Projekttypen levereras med alla mallfiler du behöver, innan du ens lägger till något!
Öppna Visual Studio. Om startfönstret inte är öppet väljer du Startfönster för fil>.
I startfönstret väljer du Skapa ett nytt projekt.
I fönstret Skapa ett nytt projekt går du till sökrutan och anger konsolen. Välj sedan Visual Basic i listan Språk och välj sedan Windows i listan Plattform.
När du har tillämpat språk- och plattformsfilter väljer du mallen Konsolapp för .NET Core och väljer sedan Nästa.
Anmärkning
Om du inte ser mallen Console App kan du installera den från fönstret Skapa ett nytt projekt. I meddelandet Hitta inte det du letar efter? väljer du länken Installera fler verktyg och funktioner . Välj sedan arbetsbelastningen .NET Desktop Development i Visual Studio Installer.
I fönstret Konfigurera det nya projektet anger du get-started-debugging för Projektnamn. Välj sedan Nästa.
I fönstret Ytterligare information kontrollerar du att .NET 10.0 har valts för Framework och väljer sedan Skapa.
Öppna Visual Studio. Om startfönstret inte är öppet väljer du Startfönster för fil>.
I startfönstret väljer du Skapa ett nytt projekt.
I fönstret Skapa ett nytt projekt går du till sökrutan och anger konsolen. Välj sedan Visual Basic i listan Språk och välj sedan Windows i listan Plattform.
När du har tillämpat språk- och plattformsfilter väljer du mallen Konsolapp för .NET Core och väljer sedan Nästa.
Anmärkning
Om du inte ser mallen Console App kan du installera den från fönstret Skapa ett nytt projekt. I meddelandet Hitta inte det du letar efter? väljer du länken Installera fler verktyg och funktioner . Välj sedan arbetsbelastningen .NET Desktop Development i Visual Studio Installer.
I fönstret Konfigurera det nya projektet anger du get-started-debugging för Projektnamn. Välj sedan Nästa.
I fönstret Ytterligare information kontrollerar du att .NET 8.0 har valts för Framework och väljer sedan Skapa.
Visual Studio öppnar det nya projektet.
Skapa programmet
I Program.vb ersätter du all standardkod med följande kod:
Imports System
Class ArrayExample
Public Shared Sub Main()
Dim letters As Char() = {"f"c, "r"c, "e"c, "d"c, " "c, "s"c, "m"c, "i"c, "t"c, "h"c}
Dim name As String = ""
Dim a As Integer() = New Integer(9) {}
For i As Integer = 0 To letters.Length - 1
name += letters(i)
a(i) = i + 1
SendMessage(name, a(i))
Next
Console.ReadKey()
End Sub
Private Shared Sub SendMessage(ByVal name As String, ByVal msg As Integer)
Console.WriteLine("Hello, " & name & "! Count to " & msg)
End Sub
End Class
Starta felsökningsprogrammet!
Tryck på F5 (Felsök > Starta felsökning) eller välj den gröna knappen Starta felsökning i verktygsfältet Felsökning.
F5 startar appen med felsökningsprogrammet kopplat till appprocessen. Hittills har du inte gjort något speciellt för att undersöka koden. Appen laddas helt enkelt och du ser utdata på konsolen.
Hello, f! Count to 1 Hello, fr! Count to 2 Hello, fre! Count to 3 Hello, fred! Count to 4 Hello, fred ! Count to 5 Hello, fred s! Count to 6 Hello, fred sm! Count to 7 Hello, fred smi! Count to 8 Hello, fred smit! Count to 9 Hello, fred smith! Count to 10I den här självstudien tar du en närmare titt på den här appen med hjälp av felsökningsprogrammet och tar en titt på felsökningsfunktionerna.
Stoppa felsökningsprogrammet genom att trycka på (Skift + F5) eller välj den röda knappen Stoppa felsökning i verktygsfältet Felsökning.
I konsolfönstret trycker du på en tangent för att stänga konsolfönstret.
Ange en brytpunkt och starta felsökningsprogrammet
I -loopen
ForförMainfunktionen anger du en brytpunkt genom att klicka på vänstermarginalen på följande kodrad:name += letters(i)En röd cirkel visas där du anger brytpunkten.
Brytpunkter är en av de mest grundläggande och viktigaste funktionerna i tillförlitlig felsökning. En brytpunkt anger var Visual Studio pausar koden som körs. När du är pausad kan du titta på värdena för variabler eller minnesbeteendet. Du kan se om en gren av kod körs.
Tryck på F5 (Felsök > startfelsökning) eller knappen Starta felsökning i verktygsfältet Felsökning. Appen startar och felsökningsprogrammet körs till den kodrad där du anger brytpunkten.
Den gula pilen representerar instruktionen där felsökningsprogrammet pausade, vilket också pausar appkörningen vid samma tidpunkt. Den här instruktionen har ännu inte körts.
Om appen inte körs ännu startar F5 felsökningsprogrammet och stoppar vid den första brytpunkten. Annars fortsätter F5 att köra appen till nästa brytpunkt.
Brytpunkter är en användbar funktion när du känner till kodraden eller det kodavsnitt som du vill undersöka i detalj. Information om de olika typerna av brytpunkter finns i Använda brytpunkter.
Navigera kod i felsökningsprogrammet med hjälp av stegkommandon
Den här artikeln använder kortkommandona eftersom det är ett bra sätt att snabbt köra appen i felsökningsprogrammet. Den visar motsvarande kommandon, till exempel menykommandon, inom parenteser.
Medan kodkörningen är pausad i
Forloopen iMainmetoden trycker du på F11 (eller väljer Felsöka > Steg in) två gånger för att fortsätta till metodanropetSendMessage.När du har tryckt på F11 två gånger bör du vara på den här kodraden:
SendMessage(name, a(i))Tryck på F11 en gång till för att gå in i
SendMessagemetoden.Den gula pekaren avancerar till
SendMessagemetoden.
F11 är kommandot Step Into . Avancerar appkörningen en sats för gång. F11 är ett bra sätt att undersöka exekveringsflödet i mest detalj. Som standard hoppar felsökningsprogrammet över kod som inte är använda. Mer information finns i Just My Code.
Anta att du är klar med att undersöka
SendMessagemetoden och vill lämna metoden men stanna kvar i felsökaren. Du kan göra detta med hjälp av kommandot Step Out .Tryck på Skift + F11 (eller Debug> Steg ut).
Det här kommandot återupptar appkörningen och avancerar felsökningsprogrammet tills den aktuella metoden eller funktionen returnerar.
Du bör vara tillbaka i
For-slingan iMain-metoden, pausad vid metodanropetSendMessage.Tryck på F11 flera gånger tills du kommer tillbaka till metodanropet
SendMessageigen.Medan kodkörningen pausas vid metodanropet trycker du på F10 (eller väljer Felsöka > Steg över) en gång.
Den här gången går felsökningsprogrammet inte in i
SendMessagemetoden. F10 avancerar felsökningsprogrammet utan att gå in på funktioner eller metoder i appkoden. Koden körs fortfarande. Genom att trycka på F10 på metodanropetSendMessagei stället för F11 hoppade du över implementeringskoden förSendMessage. Mer information om olika sätt att gå igenom koden finns i Navigera kod i felsökningsprogrammet.
Navigera kod med Kör för att klicka
Tryck på F5 för att gå vidare till brytpunkten igen.
Rulla nedåt i kodredigeraren och hovra över
Console.WriteLinemetoden iSendMessagemetoden tills den gröna knappen Kör för att klicka visas. Knappbeskrivningen för knappen visar Kör körning till här.
Välj knappen Kör för att klicka .
Felsökningsprogrammet avancerar till
Console.WriteLine-metoden.Att använda den här knappen liknar att ange en tillfällig brytpunkt. Run to Click är praktiskt för att snabbt navigera inom en synlig del av appkod, som du kan välja i vilken öppen fil som helst.
Starta om appen snabbt
Starta om appen genom att trycka på tangentkombinationen Ctrl + Skift + F5 . Det sparar tid jämfört med att stoppa appen och starta om felsökningsprogrammet. Felsökningsprogrammet pausar vid den första brytpunkten som träffas genom att köra kod.
Felsökningsprogrammet stoppas igen vid den brytpunkt som du tidigare angav i loopen For .
Inspektera variabler med datatips
Felsökningsprogrammet har funktioner som gör att du kan inspektera variabler. Det finns olika sätt att inspektera variabler. När du försöker felsöka ett problem försöker du ofta ta reda på om variabler lagrar de värden som du förväntar dig att de ska ha vid en viss tidpunkt.
När kodkörningen är pausad vid statement
name += letters[i], hovra över variabelnletters. Du ser dess standardvärde, värdet för det första elementet i matrisen,"f"c.Hovra sedan över variabeln
nameför att se dess aktuella värde, en tom sträng.Tryck på F5 (eller Felsök>Fortsätt) några gånger för att iterera flera gånger genom loopen
For, pausa igen vid brytpunkten och hovra över variabelnnamevarje gång för att kontrollera dess värde.
Värdet för variabeln ändras med varje iteration av
For-loopen, som visar värden förf, sedanfr, sedanfreoch så vidare.När du felsöker kod vill du ofta ha ett snabbt sätt att kontrollera egenskapsvärden för variabler för att se om de lagrar de värden som du förväntar dig att de ska lagra. Datatips är ett bra sätt att göra det på.
Granska variabler med fönstren Auto och Lokal.
Titta på fönstret Autos längst ned i kodredigeraren.
Om den är stängd öppnar du den medan kodkörningen pausas i felsökningsprogrammet genom att välja Felsöka>windows>autos.
I fönstret Autos ser du variabler och deras aktuella värde. Fönstret Autos visar alla variabler som används på den aktuella raden eller föregående rad. Kontrollera dokumentationen för språkspecifikt beteende.
Titta sedan på fönstret Lokalt på en flik bredvid fönstret Autos .
Expandera variabeln
lettersför att visa de element som den innehåller.
Fönstret Locals visar de variabler som finns i det aktuella omfånget, det vill säga den aktuella körningskontexten.
Ställ in en klocka eller håll utkik
Du kan ange en variabel eller ett uttryck som du vill hålla ett öga på när du går igenom koden genom att lägga till den i bevakningsfönstret .
När felsökningsprogrammet har pausats högerklickar du på variabeln
nameoch väljer Lägg till klocka.Bevakningsfönstret öppnas som standard längst ned i kodredigeraren.
Nu när du har angett en klocka på variabeln
namegår du igenom koden för att se värdet för variabeländringennamemed varjeforloop-iteration.Till skillnad från de andra variabelfönstren visar fönstret Watch alltid de variabler som du tittar på. Variabler som ligger utanför omfånget visas som otillgängliga.
Mer information om Watch-fönstret finns i Watch variables with Watch windows.
Granska anropsstacken
Medan kodkörningen pausas i
For-loopen väljer du fönstret Anropsstack som är öppet som standard i den nedre högra rutan.Om den är stängd öppnar du den medan kodkörningen pausas i felsökningsprogrammet genom att välja Felsöka>Windows>Call Stack.
Välj F11 några gånger tills du ser felsökningsverktyget pausa i
SendMessagemetoden. Titta på fönstret Samtalsstack .
Fönstret Call Stack visar i vilken ordning metoder och funktioner anropas. Den översta raden visar den aktuella funktionen. I det här exemplet är det
SendMessage-metoden. Den andra raden visar somSendMessageanropades frånMainmetoden och så vidare.Anmärkning
Call Stack-fönstret liknar felsökningsperspektivet i vissa programmeringsverktyg som Eclipse.
Anropsstacken är ett bra sätt att undersöka och förstå körningsflödet för en app.
Du kan dubbelklicka på en kodrad för att granska källkoden, vilket även ändrar det aktuella omfånget under inspektion av debuggern. Den här åtgärden avancerar inte felsökningsprogrammet.
Du kan också använda högerklicksmenyer från fönstret Anropsstack för att göra andra saker. Du kan till exempel infoga brytpunkter i angivna funktioner, avancera felsökningsprogrammet med kör till markör och gå igenom källkoden. Mer information finns i Så här: Granska anropsstacken.
Ändra körningsflödet
Tryck på F11 två gånger för att köra
Console.WriteLinemetoden.När felsökningsprogrammet har pausats i metodanropet
SendMessage, använd musen för att ta tag i den gula pilen eller körningspekaren i vänstermarginalen och dra pekaren upp en rad tillConsole.WriteLine-satsen.Tryck på F11.
Felsökningsprogrammet kör metoden igen
Console.WriteLine. Du ser denna åtgärd i utdata från konsolfönstret.Genom att ändra exekveringsflödet kan du testa olika kodens exekveringsvägar eller köra om kod utan att starta om debuggern.
Varning
Du måste ofta vara försiktig med den här funktionen. Det finns en varning i knappbeskrivningen. Du kan också se andra varningar. Att flytta pekaren kan inte återställa programmet till ett tidigare apptillstånd.
Tryck på F5 för att fortsätta köra appen.
Grattis till att du har klarat den här guiden!
Relaterat innehåll
I den här självstudien har du lärt dig hur du startar felsökningsprogrammet, går igenom kod och inspekterar variabler. Du kanske vill titta på felsökningsfunktioner på hög nivå tillsammans med länkar till mer information.