Övning – Ange brytpunkter
Brytpunkter används under felsökningsprocessens pauskörning. På så sätt kan du spåra variabler och undersöka i vilken ordning koden körs. Brytpunkter är ett bra sätt att starta felsökningsprocessen.
Ange en brytpunkt
Tidigare i den här modulen slutförde du en övning där du körde ett program i felsökningsprogrammet. Programmet visade "hälsningsmeddelanden" på panelen FELSÖKNINGSKONSOL. I slutet av övningen märkte du att koden upprepar Andrews hälsning på ett oväntat sätt.
I den här övningen använder du en brytpunkt som hjälper dig att identifiera problemet.
Kontrollera att filen Program.cs innehåller följande kodexempel:
/* This code uses a names array and corresponding methods to display greeting messages */ string[] names = new string[] { "Sophia", "Andrew", "AllGreetings" }; string messageText = ""; foreach (string name in names) { if (name == "Sophia") messageText = SophiaMessage(); else if (name == "Andrew") messageText = AndrewMessage(); else if (name == "AllGreetings") messageText = SophiaMessage(); messageText = messageText + "\n\r" + AndrewMessage(); Console.WriteLine(messageText + "\n\r"); } bool pauseCode = true; while (pauseCode == true); static string SophiaMessage() { return "Hello, my name is Sophia."; } static string AndrewMessage() { return "Hi, my name is Andrew. Good to meet you."; }Använd felsökningsverktygen i Visual Studio Code för att ange en brytpunkt på den första kodraden i loopen
foreach.
Tips/Råd
Ett enkelt alternativ för att växla på/av en brytpunkt är att välja (vänsterklicka) området till vänster om radnumret. Brytpunkter kan också anges med hjälp
Runav menyn och med hjälp av kortkommandon.På menyn Kör väljer du Starta felsökning.
Observera att kodkörningen pausar vid brytpunkten och att den aktuella kodraden är markerad i redigeraren.
I verktygsfältet Felsökningskontroller väljer du Stega in.
Du kan hovra muspekaren över knapparna i verktygsfältet Felsökningskontroller för att visa knappetiketterna.
Observera att kodkörningen fortsätter till nästa kodrad och pausar.
messageText = SophiaMessage();Den här kodraden tilldelar metodens returvärde
SophiaMessagetill strängvariabelnmessageText.Tänk efter en stund på varför valet av Step Into ledde till detta resultat.
- Knappen Steg in används för att gå vidare till nästa körbara instruktion.
- Eftersom det första elementet i matrisen
namesärSophiaoch -instruktionenifsöker efter namnetSophiautvärderas uttrycket tilltrueoch kodkörningen flyttas till kodblocket i -instruktionenif.
I verktygsfältet Felsökningskontroller väljer du Stega in.
Observera att kodkörningen går vidare till metoden
SophiaMessageoch pausar.Knappen Steg in har avancerat till nästa körbara kodrad. Nästa körbara kodrad är inte nästa radnummer i filen, utan nästa instruktion i körningssökvägen. I det här fallet är nästa körbara instruktion startpunkten för
SophiaMessage-metoden.I verktygsfältet Felsökningskontroller väljer du Stega ut.
Observera att kodkörningen återgår till den kodrad som anropade
SophiaMessagemetoden och pausar.Ta en stund att tänka på varför du valde Step Out gav det här resultatet.
När du är inne i en metod slutför knappen Steg ut de återstående raderna i den aktuella metoden och återgår sedan till körningskontexten som anropade metoden.
I verktygsfältet Felsökningskontroller väljer du Stega in.
Observera att kodkörningen fortsätter till nästa kodrad och pausar.
messageText = messageText + "\n\r" + AndrewMessage();Ta en stund och fundera på varför körningen har avancerat till den här kodraden.
Även om indrag i koden antyder att den här kodraden är en del av kodblocket för instruktionen
else if, är det inte så. Att använda klammerparenteser{}för att definiera kodblocken för den härif - else ifstrukturen skulle ha bidragit till att undvika den här buggen. När koden skrivs läggs Andrews meddelande tillmessageTextvarje gång loopen itereras.
Verifiera dina koduppdateringar
När du har isolerat ett problem i koden bör du uppdatera koden och sedan kontrollera att problemet har åtgärdats.
I verktygsfältet Felsökningskontroller väljer du Stoppa.
Ta en stund för att fixa din kodlogik.
Du har några alternativ för att åtgärda det identifierade problemet i koden. Till exempel:
Du kan behålla de befintliga kodraderna och lägga till klammerparenteser
{}iifstrukturen för varje kodblock.Du kan slå samman de två kodrader som följer den slutliga
else ifinstruktionen och bilda en enda instruktion på följande sätt:else if (name == "AllGreetings") messageText = SophiaMessage() + "\n\r" + AndrewMessage();
Hur som helst måste den uppdaterade koden inkludera anropet till
AndrewMessagei kodblocket närname == "AllGreetings".På Arkiv-menyn väljer du Spara.
Använd verktygen för felsökningsgränssnittet för att rensa brytpunkten som du angav tidigare.
På menyn Kör väljer du Starta felsökning.
Kontrollera att koden nu ger förväntade resultat.
Hello, my name is Sophia. Hi, my name is Andrew. Good to meet you. Hello, my name is Sophia. Hi, my name is Andrew. Good to meet you.I verktygsfältet Felsökningskontroller väljer du Stoppa.
Grattis! Du har använt Visual Studio Code-felsökningsprogrammet för att isolera och korrigera ett logikproblem.
Sammanfattning
Här följer några viktiga saker att komma ihåg från den här lektionen:
- Använd brytpunkter för att pausa kodkörningen under en felsökningssession.
- Använd Step Into från verktygsfältet Felsökningskontroller för att se nästa körbara kodrad.
- Använd Steg ut från verktygsfältet Felsökningskontroller för att gå vidare genom den aktuella metoden och tillbaka till kodraden som anropade metoden.