Övning – Ange brytpunkter

Fullbordad

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.

  1. 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.";
    }
    
  2. Använd felsökningsverktygen i Visual Studio Code för att ange en brytpunkt på den första kodraden i loopen foreach .

    Skärmbild som visar en brytpunkt i koden.

    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 Run av menyn och med hjälp av kortkommandon.

  3. På menyn Kör väljer du Starta felsökning.

  4. Observera att kodkörningen pausar vid brytpunkten och att den aktuella kodraden är markerad i redigeraren.

    Skärmbild som visar att kodkörningen har pausats på en brytpunkt.

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

  6. Observera att kodkörningen fortsätter till nästa kodrad och pausar.

    messageText = SophiaMessage();
    

    Den här kodraden tilldelar metodens returvärde SophiaMessage till strängvariabeln messageText.

  7. 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 är Sophia och -instruktionen if söker efter namnet Sophiautvärderas uttrycket till true och kodkörningen flyttas till kodblocket i -instruktionen if .
  8. I verktygsfältet Felsökningskontroller väljer du Stega in.

  9. Observera att kodkörningen går vidare till metoden SophiaMessage och 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.

  10. I verktygsfältet Felsökningskontroller väljer du Stega ut.

  11. Observera att kodkörningen återgår till den kodrad som anropade SophiaMessage metoden och pausar.

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

  13. I verktygsfältet Felsökningskontroller väljer du Stega in.

  14. Observera att kodkörningen fortsätter till nästa kodrad och pausar.

    messageText = messageText + "\n\r" + AndrewMessage();
    
  15. 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är if - else if strukturen skulle ha bidragit till att undvika den här buggen. När koden skrivs läggs Andrews meddelande till messageText varje 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.

  1. I verktygsfältet Felsökningskontroller väljer du Stoppa.

  2. 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 {} i if strukturen för varje kodblock.

    • Du kan slå samman de två kodrader som följer den slutliga else if instruktionen 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 AndrewMessage i kodblocket när name == "AllGreetings".

  3. Arkiv-menyn väljer du Spara.

  4. Använd verktygen för felsökningsgränssnittet för att rensa brytpunkten som du angav tidigare.

  5. På menyn Kör väljer du Starta felsökning.

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