Debuggeri
Mikä on debuggeri?
Debuggeri on työkalu, joka auttaa askeltamaan koodisi läpi. Voimme pysäyttää koodin suorituksen tietyssä kohdassa ja käynnistää debuggaustilan nähdäksemme, miten koodimme toimii. Tätä varten meidän täytyy asettaa merkki (breakpoint) riville, jossa haluamme pysäyttää suorituksen.
Meillä on koodi, jonka pitäisi laskea lukujen summa yhdestä kymmeneen mukaan lukien. Tuloksen pitäisi olla 55, mutta saamme vastaukseksi 45. Asetetaan breakpoint silmukan alkuun ymmärtääksemme, miksi vastaus ei täsmää. Tämä tehdään napsauttamalla vasemmalla hiiren painikkeella rivinumeroa, jolloin siihen ilmestyy punainen merkki.
Tässä on kuvakaappauksen koodi, kirjoitettu uudelleen paremman luettavuuden ja selkeyden vuoksi:
Main.java
12345678910111213package com.example; import java.util.Arrays; public class Main { public static void main(String[] args) { int result = 0; for(int i = 0; i < 10; i++) { result += 1; System.out.println(result); } } }
Työkalut debuggaustilassa
Katsotaan lyhyesti, miten debuggeri toimii ja mitä työkaluja siinä on käytettävissä.
-
Step Over: Tällä painikkeella voidaan jatkaa koodin suorittamista rivi kerrallaan. Kun painiketta painetaan, debuggeri suorittaa nykyisen rivin ja siirtyy seuraavalle riville, pysähtyen jälleen;
-
Step Into: Tällä painikkeella voidaan siirtyä metodin suorittamiseen. Esimerkissämme ei ole metodia, mutta jos sellainen olisi, voisimme astua sen sisään ja tarkastella, mitä siellä tapahtuu;
-
Step Out: Tämä painike toimii päinvastoin kuin edellinen. Sen avulla voidaan poistua metodin tai silmukan suorittamisesta;
-
Muuttujien arvot näkyvät ikkunassa alhaalla tai muuttujien vieressä. Voimme selkeästi nähdä muuttujan
resultarvon, joka aluksi on nolla.
Koodin läpikäynti
Läpikäyntiä varten napsautetaan "Step Over" -painiketta. Siirrymme for-silmukkaan, ja muuttujan i arvo ilmestyy, joka luodaan for-silmukan sisällä. Aluksi asetamme tämän muuttujan arvoksi nolla.
Seuraavaksi napsautetaan "Step Over" useita kertoja, jotta yksi iteraatio saadaan valmiiksi ja siirrytään konsoliin tarkistamaan, tulostuuko mitään näytölle. Näemme, että muuttujan i arvo kasvoi 1:llä ja näytölle tulostui "0", koska sekä result- että i-muuttujat oli aluksi asetettu nollaksi. 0 + 0 = 0 -> tämä tulostui näytölle.
Ohitetaan muiden lukujen tulostuksen vaiheet konsoliin ja siirrytään loppuun. Juuri tässä voimme nähdä päävirheen silmukassamme. Meidän pitäisi näyttää lukujen summa 0:sta 10:een mukaan lukien 10, mutta emme sisällyttäneet 10:ä. Siksi, kun näemme, että i = 9 ja kun sitä kasvatetaan arvoon 10, poistumme silmukasta, koska 10 !< 10 (10 ei ole pienempi kuin 10).
Tämän ongelman ratkaisemiseksi meidän täytyy muuttaa ehtoa muotoon i <= 10. Silloin saamme oikean tuloksen.
Käytännössä painoimme "Step Over" -painiketta useita kertoja, mikä johti meidät huomaamaan silmukan virheen ja sen korjaamiseen.
Huomautus
Olen esitellyt vain perusdebuggaustyökalut. Oppiaksesi käyttämään niitä, sinun kannattaa harjoitella itse. Voit kirjoittaa vastaavan ohjelman ja itsenäisesti nähdä, miten kaikki toimii. Debuggeri on erittäin hyödyllinen työkalu, koska se auttaa löytämään ja korjaamaan virheitä koodissa.
1. Mikä on debuggerin ensisijainen tarkoitus?
2. Mitä breakpoint mahdollistaa debuggerissa?
3. Mitä "Step Over" -painike tekee debuggerissa?
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Awesome!
Completion rate improved to 4.76
Debuggeri
Pyyhkäise näyttääksesi valikon
Mikä on debuggeri?
Debuggeri on työkalu, joka auttaa askeltamaan koodisi läpi. Voimme pysäyttää koodin suorituksen tietyssä kohdassa ja käynnistää debuggaustilan nähdäksemme, miten koodimme toimii. Tätä varten meidän täytyy asettaa merkki (breakpoint) riville, jossa haluamme pysäyttää suorituksen.
Meillä on koodi, jonka pitäisi laskea lukujen summa yhdestä kymmeneen mukaan lukien. Tuloksen pitäisi olla 55, mutta saamme vastaukseksi 45. Asetetaan breakpoint silmukan alkuun ymmärtääksemme, miksi vastaus ei täsmää. Tämä tehdään napsauttamalla vasemmalla hiiren painikkeella rivinumeroa, jolloin siihen ilmestyy punainen merkki.
Tässä on kuvakaappauksen koodi, kirjoitettu uudelleen paremman luettavuuden ja selkeyden vuoksi:
Main.java
12345678910111213package com.example; import java.util.Arrays; public class Main { public static void main(String[] args) { int result = 0; for(int i = 0; i < 10; i++) { result += 1; System.out.println(result); } } }
Työkalut debuggaustilassa
Katsotaan lyhyesti, miten debuggeri toimii ja mitä työkaluja siinä on käytettävissä.
-
Step Over: Tällä painikkeella voidaan jatkaa koodin suorittamista rivi kerrallaan. Kun painiketta painetaan, debuggeri suorittaa nykyisen rivin ja siirtyy seuraavalle riville, pysähtyen jälleen;
-
Step Into: Tällä painikkeella voidaan siirtyä metodin suorittamiseen. Esimerkissämme ei ole metodia, mutta jos sellainen olisi, voisimme astua sen sisään ja tarkastella, mitä siellä tapahtuu;
-
Step Out: Tämä painike toimii päinvastoin kuin edellinen. Sen avulla voidaan poistua metodin tai silmukan suorittamisesta;
-
Muuttujien arvot näkyvät ikkunassa alhaalla tai muuttujien vieressä. Voimme selkeästi nähdä muuttujan
resultarvon, joka aluksi on nolla.
Koodin läpikäynti
Läpikäyntiä varten napsautetaan "Step Over" -painiketta. Siirrymme for-silmukkaan, ja muuttujan i arvo ilmestyy, joka luodaan for-silmukan sisällä. Aluksi asetamme tämän muuttujan arvoksi nolla.
Seuraavaksi napsautetaan "Step Over" useita kertoja, jotta yksi iteraatio saadaan valmiiksi ja siirrytään konsoliin tarkistamaan, tulostuuko mitään näytölle. Näemme, että muuttujan i arvo kasvoi 1:llä ja näytölle tulostui "0", koska sekä result- että i-muuttujat oli aluksi asetettu nollaksi. 0 + 0 = 0 -> tämä tulostui näytölle.
Ohitetaan muiden lukujen tulostuksen vaiheet konsoliin ja siirrytään loppuun. Juuri tässä voimme nähdä päävirheen silmukassamme. Meidän pitäisi näyttää lukujen summa 0:sta 10:een mukaan lukien 10, mutta emme sisällyttäneet 10:ä. Siksi, kun näemme, että i = 9 ja kun sitä kasvatetaan arvoon 10, poistumme silmukasta, koska 10 !< 10 (10 ei ole pienempi kuin 10).
Tämän ongelman ratkaisemiseksi meidän täytyy muuttaa ehtoa muotoon i <= 10. Silloin saamme oikean tuloksen.
Käytännössä painoimme "Step Over" -painiketta useita kertoja, mikä johti meidät huomaamaan silmukan virheen ja sen korjaamiseen.
Huomautus
Olen esitellyt vain perusdebuggaustyökalut. Oppiaksesi käyttämään niitä, sinun kannattaa harjoitella itse. Voit kirjoittaa vastaavan ohjelman ja itsenäisesti nähdä, miten kaikki toimii. Debuggeri on erittäin hyödyllinen työkalu, koska se auttaa löytämään ja korjaamaan virheitä koodissa.
1. Mikä on debuggerin ensisijainen tarkoitus?
2. Mitä breakpoint mahdollistaa debuggerissa?
3. Mitä "Step Over" -painike tekee debuggerissa?
Kiitos palautteestasi!