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 kuvakaappauksessa oleva koodi, kirjoitettuna 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 debug-tilassa
Katsotaan lyhyesti, miten debuggeri toimii ja mitä työkaluja sen sisällä on käytettävissä.
Step Over: Tällä painikkeella voimme jatkaa koodin suorittamista rivi kerrallaan. Kun sitä painetaan, debuggeri suorittaa nykyisen rivin ja siirtyy seuraavalle riville, ja pysähtyy taas;
Step Into: Tällä painikkeella voimme 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 on edellisen vastakohta. Sen avulla voimme poistua metodin tai silmukan suorittamisesta;
Voimme nähdä muuttujien arvot ikkunassa alhaalla tai näiden muuttujien vieressä. Voimme selvästi nähdä muuttujan
result
arvon, 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 napsautamme "Step Over" useita kertoja suorittaaksemme yhden iteraation ja siirrymme 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 tulostus konsoliin ja siirrytään loppuun. Juuri täällä näemme silmukkamme päävirheen. Meidän pitäisi tulostaa lukujen summa 0:sta 10:een mukaan lukien, mutta emme ottaneet mukaan 10. Siksi, kun näemme, että i = 9
ja kun sitä kasvatetaan 10
:een, 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 perusvirheenjäljitystyökalut. Oppiaksesi käyttämään niitä, sinun tulisi harjoitella itse. Voit kirjoittaa vastaavan ohjelman ja itsenäisesti tarkastella, miten kaikki toimii. Virheenjäljitin on erittäin hyödyllinen työkalu, koska se auttaa löytämään ja korjaamaan virheitä sekä bugeja koodissa.
1. Mikä on virheenjäljittimen ensisijainen tarkoitus?
2. Mitä keskeytyskohta (breakpoint) mahdollistaa virheenjäljittimessä?
3. Mitä "Step Over" -debuggauspainike tekee?
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme