Harjoitus – Määritä keskeytyskohdat

Valmis

Keskeytyskohtia käytetään virheenkorjausprosessin keskeytysvaiheessa. Tämän avulla voit seurata muuttujia ja tarkastella järjestystä, jossa koodisi suoritetaan. Keskeytyskohdat ovat erinomainen tapa aloittaa virheenkorjausprosessi.

Määritä keskeytyskohta

Suoritit aiemmin tässä moduulissa harjoituksen, jossa suoritit sovelluksen virheenkorjauksessa. Sovellus näytti "tervehdysviestit" DEBUG CONSOLE -paneelissa. Harjoituksen lopussa huomasit, että koodi toistaa Andrew'n tervehdyksen odottamattomalla tavalla.

Tässä harjoituksessa käytät keskeytyskohtaa, joka auttaa tunnistamaan ongelman.

  1. Varmista, että Program.cs tiedostosi sisältää seuraavan koodiesimerkkin:

    /* 
    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. Määritä keskeytyskohta silmukan ensimmäiselle koodiriville Visual Studio Coden foreach virheenkorjaustyökalujen avulla.

    Näyttökuva, joka näyttää koodin keskeytyskohdan.

    Juomaraha

    Voit ottaa keskeytyskohdan käyttöön tai poistaa sen käytöstä helposti valitsemalla rivinumeron vasemmalla puolella olevan alueen (hiiren kakkospainikkeella). Keskeytyskohtia voi määrittää myös valikon Run avulla ja pikanäppäimillä.

  3. Valitse Suorita-valikostaAloita virheenkorjaus.

  4. Huomaa, että koodin suorittaminen keskeytyy keskeytyspisteessä ja että nykyinen koodirivi näkyy korostettuna editorissa.

    Näyttökuva, jossa näkyy koodin suorittaminen keskeytettynä keskeytyskohtaan.

  5. Valitse Virheenkorjaus-ohjausobjektien työkalurivillä Vaihe vaihe vaiheeseen.

    Voit näyttää painikkeiden selitteet viemällä hiiren osoittimen Virheenkorjaus-työkalurivin painikkeiden kohdalle.

  6. Huomaa, että koodin suorittaminen etenee seuraavalle koodiriville ja keskeytyy:

    messageText = SophiaMessage();
    

    Tämä koodirivi määrittää -menetelmän palautusarvon SophiaMessage merkkijonomuuttujalle messageText.

  7. Mieti hetki, miksi Step Into -vaihtoehdon valitseminen tuotti tämän tuloksen.

    • Step Into -painikkeella siirrytään seuraavaan suoritettavaan lausekkeeseen.
    • Koska matriisin ensimmäinen elementti names on Sophia ja if lauseke tarkistaa nimeä Sophia, lauseke arvioi true kohteen ja koodin suoritus siirtyy lausekkeen if koodilohkoon.
  8. Valitse Virheenkorjaus-ohjausobjektien työkalurivillä Vaihe vaihe vaiheeseen.

  9. Huomaa, että koodin suorittaminen etenee -menetelmään SophiaMessage ja keskeytyy.

    Step Into -painike on edennyt seuraavalle suoritettavalle koodiriville. Seuraava suoritettava koodirivi ei ole tiedoston seuraava rivinumero, se on suorituspolun seuraava lauseke. Tässä tapauksessa seuraava suoritettava lauseke on -menetelmän SophiaMessage aloituskohta.

  10. Valitse Virheenkorjaus-ohjausobjektien työkalurivillä Vaihe ulos.

  11. Huomaa, että koodin suorittaminen palaa koodiriville, joka kutsui -menetelmää SophiaMessage ja keskeyttää.

  12. Mieti hetki, miksi Step Out -vaihtoehdon valitseminen tuotti tämän tuloksen.

    Kun olet -menetelmän sisällä, Vaihe ulos -painike täyttää nykyisen menetelmän jäljellä olevat rivit ja palauttaa sitten suorituskontekstiin, joka käynnisti -menetelmän.

  13. Valitse Virheenkorjaus-ohjausobjektien työkalurivillä Vaihe vaihe vaiheeseen.

  14. Huomaa, että koodin suorittaminen etenee seuraavalle koodiriville ja keskeytyy:

    messageText = messageText + "\n\r" + AndrewMessage();
    
  15. Mieti hetki, miksi suoritus on edistynyt tälle koodiriville.

    Vaikka koodin sisennys viittaa siihen, että tämä koodirivi on osa lausekkeen koodilohkoa else if , se ei ole. Tämän {} rakenteen koodilohkojen määrittäminen aaltosulkeiden if - else if avulla olisi auttanut välttämään tämän virheen. Kun koodi on kirjoitettu, Andrew'n viesti lisätään aina messageText , kun silmukka iteroi.

Koodipäivitysten tarkistaminen

Kun olet eristänyt koodin ongelman, päivitä koodisi ja tarkista, että ongelma on korjattu.

  1. Valitse Virheenkorjaus-ohjausobjektien työkalurivillä Pysäytä.

  2. Korjaa koodilogiikkasi hetki.

    Voit korjata tunnistettua ongelmaa koodissasi muutamalla eri tavalla. Esimerkiksi:

    • Voit säilyttää olemassa olevat koodirivit ja lisätä kaarisulkeita {} kunkin koodilohkon if rakenteeseen.

    • Voit yhdistää kaksi koodiriviä, jotka seuraavat lopullista else if lauseketta, muodostamalla yhden lausekkeen seuraavasti:

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

    Kummassakin tapauksessa päivitetyn koodin on sisällettävä kutsu AndrewMessage koodilohkoon, kun name == "AllGreetings".

  3. Valitse Tiedosto- -valikosta Tallenna.

  4. Poista aiemmin määrittämäsi keskeytyskohta virheenkorjauksen käyttöliittymätyökalujen avulla.

  5. Valitse Suorita-valikostaAloita virheenkorjaus.

  6. Varmista, että koodisi tuottaa nyt odotetut tulokset.

    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. Valitse Virheenkorjaus-ohjausobjektien työkalurivillä Pysäytä.

Onnittelen! Olet käyttänyt Visual Studio Coden virheenkorjaajaa, joka auttaa eristämään ja korjaamaan logiikkaongelman.

Kertaus

Tässä on muutamia tärkeitä asioita, jotka kannattaa muistaa tästä osiosta:

  • Keskeytyskokeiden avulla voit keskeyttää koodin suorittamisen virheenkorjausistunnon aikana.
  • Käytä Virheenkorjaus-ohjausobjektien työkalurivin Vaihe sisään -toimintoa seuraavan suoritettavan koodirivin tarkastelemiseen.
  • Siirry nykyisen menetelmän läpi Virheenkorjaus-työkalurivinVaihe ulos -toiminnolla ja palaa takaisin -menetelmää kutsuttavalle koodiriville.