Øvelse – angiv pausepunkter

Fuldført

Pausepunkter bruges under udførelse af fejlfindingsprocessen. Dette giver dig mulighed for at spore variabler og undersøge den sekvens, som koden udføres i. Breakpoints er en god måde at starte fejlfindingsprocessen på.

Angiv et pausepunkt

Tidligere i dette modul gennemførte du en øvelse, hvor du kørte et program i fejlfindingsprogrammet. Programmet viste "hilsener" i panelet DEBUG CONSOLE. I slutningen af øvelsen bemærkede du, at koden gentager Andrews hilsen på en uventet måde.

I denne øvelse skal du bruge et pausepunkt til at hjælpe dig med at identificere problemet.

  1. Sørg for, at din Program.cs fil indeholder følgende kodeeksempel:

    /* 
    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. Brug værktøjerne til fejlfinding af Visual Studio Code til at angive et pausepunkt på den første kodelinje i løkken foreach .

    Skærmbillede, der viser et pausepunkt i kode.

    Drikkepenge

    En nem mulighed for at slå et pausepunkt til/fra er at vælge (venstreklik) området til venstre for linjenummeret. Pausepunkter kan også angives ved hjælp Run af menuen og ved hjælp af tastaturgenveje.

  3. Vælg Start fejlfinding i menuen Kør.

  4. Bemærk, at udførelsen af kode afbrydes midlertidigt ved pausepunktet, og at den aktuelle kodelinje er fremhævet i Editor.

    Skærmbillede, der viser, at udførelse af kode er midlertidigt afbrudt på et pausepunkt.

  5. Vælg Trin ind på værktøjslinjen Fejlfindingskontrolelementer.

    Du kan holde musemarkøren over knapperne på værktøjslinjen Fejlfindingskontrolelementer for at få vist knapnavnene.

  6. Bemærk, at kodeudførelsen går videre til følgende kodelinje og stopper midlertidigt:

    messageText = SophiaMessage();
    

    Denne kodelinje tildeler returværdien for SophiaMessage metoden til strengvariablen messageText.

  7. Brug et øjeblik på at overveje, hvorfor du har valgt Step Into produceret dette resultat.

    • Knappen Trin ind bruges til at gå videre til den næste eksekverbare sætning.
    • Da det første element i matrixen names er Sophia , og sætningen if søger efter navnet Sophia, evalueres udtrykket til true , og kodeudførelsen flyttes ind i kodeblokken i sætningen if .
  8. Vælg Trin ind på værktøjslinjen Fejlfindingskontrolelementer.

  9. Bemærk, at udførelsen af kode går videre til SophiaMessage metoden og stopper midlertidigt.

    Knappen Trin ind er avanceret til den næste eksekverbare kodelinje. Den næste eksekverbare kodelinje er ikke det næste linjenummer i filen. Det er den næste sætning i udførelsesstien. I dette tilfælde er den næste eksekverbare sætning indgangspunktet for SophiaMessage metoden.

  10. Vælg Trin ud på værktøjslinjen Fejlfindingskontrolelementer.

  11. Bemærk, at udførelsen af kode vender tilbage til den kodelinje, der kaldte SophiaMessage metoden, og pauser.

  12. Brug et øjeblik på at overveje, hvorfor valget af Step Out gav dette resultat.

    Når du er inde i en metode, fuldfører knappen Trin ud de resterende linjer i den aktuelle metode og vender derefter tilbage til den udførelseskontekst, der aktiverede metoden.

  13. Vælg Trin ind på værktøjslinjen Fejlfindingskontrolelementer.

  14. Bemærk, at kodeudførelsen går videre til følgende kodelinje og stopper midlertidigt:

    messageText = messageText + "\n\r" + AndrewMessage();
    
  15. Brug et øjeblik på at overveje, hvorfor udførelsen er avanceret til denne kodelinje.

    Selvom kodeindrykningen antyder, at denne kodelinje er en del af kodeblokken for sætningen else if , er den ikke. Brug krøllede klammeparenteser {} til at definere kodeblokke for denne if - else if struktur ville have hjulpet med at undgå denne fejl. Når koden skrives, føjes Andrews meddelelse til messageText , hver gang løkken gentages.

Bekræft dine kodeopdateringer

Når du har isoleret et problem i din kode, skal du opdatere din kode og derefter kontrollere, at problemet er løst.

  1. Vælg Stop på værktøjslinjen Fejlfindingskontrolelementer.

  2. Brug et øjeblik på at rette din kodelogik.

    Du har et par muligheder for at løse det identificerede problem i din kode. For eksempel:

    • Du kan beholde de eksisterende kodelinjer og føje krøllede klammeparenteser {} til if strukturen for hver kodeblok.

    • Du kan flette de to kodelinjer, der følger efter den endelige else if sætning, og danne en enkelt sætning på følgende måde:

      else if (name == "AllGreetings")
          messageText = SophiaMessage() + "\n\r" + AndrewMessage();
      

    I begge tilfælde skal den opdaterede kode indeholde opkaldet til AndrewMessage i kodeblokken, når name == "AllGreetings".

  3. Vælg Gemi menuen Filer .

  4. Brug værktøjerne til fejlfinding af brugergrænsefladen til at rydde det pausepunkt, du har angivet tidligere.

  5. Vælg Start fejlfinding i menuen Kør.

  6. Kontrollér, at din kode nu giver de forventede resultater.

    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. Vælg Stop på værktøjslinjen Fejlfindingskontrolelementer.

Tillykke! Du har brugt Visual Studio Code-fejlfindingsprogrammet til at hjælpe dig med at isolere og rette et logikproblem.

Resumé

Her er et par vigtige ting, du skal huske fra dette undermodul:

  • Brug pausepunkter til at afbryde udførelsen af kode midlertidigt under en fejlfindingssession.
  • Brug Step Into fra værktøjslinjen Fejlfindingskontrolelementer til at se den næste eksekverbare kodelinje.
  • Brug Step Out fra værktøjslinjen Fejlfindingskontrolelementer til at gå gennem den aktuelle metode og tilbage til den kodelinje, der kaldte metoden.