Harjoitus – Määritä keskeytyskohdat
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.
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."; }Määritä keskeytyskohta silmukan ensimmäiselle koodiriville Visual Studio Coden
foreachvirheenkorjaustyökalujen avulla.
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
Runavulla ja pikanäppäimillä.Valitse Suorita-valikostaAloita virheenkorjaus.
Huomaa, että koodin suorittaminen keskeytyy keskeytyspisteessä ja että nykyinen koodirivi näkyy korostettuna editorissa.
Valitse Virheenkorjaus-ohjausobjektien työkalurivillä Vaihe vaihe vaiheeseen.
Voit näyttää painikkeiden selitteet viemällä hiiren osoittimen Virheenkorjaus-työkalurivin painikkeiden kohdalle.
Huomaa, että koodin suorittaminen etenee seuraavalle koodiriville ja keskeytyy:
messageText = SophiaMessage();Tämä koodirivi määrittää -menetelmän palautusarvon
SophiaMessagemerkkijonomuuttujallemessageText.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
namesonSophiajaiflauseke tarkistaa nimeäSophia, lauseke arvioitruekohteen ja koodin suoritus siirtyy lausekkeenifkoodilohkoon.
Valitse Virheenkorjaus-ohjausobjektien työkalurivillä Vaihe vaihe vaiheeseen.
Huomaa, että koodin suorittaminen etenee -menetelmään
SophiaMessageja 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
SophiaMessagealoituskohta.Valitse Virheenkorjaus-ohjausobjektien työkalurivillä Vaihe ulos.
Huomaa, että koodin suorittaminen palaa koodiriville, joka kutsui -menetelmää
SophiaMessageja keskeyttää.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.
Valitse Virheenkorjaus-ohjausobjektien työkalurivillä Vaihe vaihe vaiheeseen.
Huomaa, että koodin suorittaminen etenee seuraavalle koodiriville ja keskeytyy:
messageText = messageText + "\n\r" + AndrewMessage();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 aaltosulkeidenif - else ifavulla olisi auttanut välttämään tämän virheen. Kun koodi on kirjoitettu, Andrew'n viesti lisätään ainamessageText, kun silmukka iteroi.
Koodipäivitysten tarkistaminen
Kun olet eristänyt koodin ongelman, päivitä koodisi ja tarkista, että ongelma on korjattu.
Valitse Virheenkorjaus-ohjausobjektien työkalurivillä Pysäytä.
Korjaa koodilogiikkasi hetki.
Voit korjata tunnistettua ongelmaa koodissasi muutamalla eri tavalla. Esimerkiksi:
Voit säilyttää olemassa olevat koodirivit ja lisätä kaarisulkeita
{}kunkin koodilohkonifrakenteeseen.Voit yhdistää kaksi koodiriviä, jotka seuraavat lopullista
else iflauseketta, muodostamalla yhden lausekkeen seuraavasti:else if (name == "AllGreetings") messageText = SophiaMessage() + "\n\r" + AndrewMessage();
Kummassakin tapauksessa päivitetyn koodin on sisällettävä kutsu
AndrewMessagekoodilohkoon, kunname == "AllGreetings".Valitse Tiedosto- -valikosta Tallenna.
Poista aiemmin määrittämäsi keskeytyskohta virheenkorjauksen käyttöliittymätyökalujen avulla.
Valitse Suorita-valikostaAloita virheenkorjaus.
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.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.