|
Sisällysluettelo
|
1. Yleistä virheistäVirhe => virhetoiminto on havaittu eroavaisuus ohjelmiston toiminnassa ja määrityksissä. Ohjelmassa voi olla kolmen tyyppisiä virheitä: käännösaikaisia, ajonaikaisia ja loogisia. Käännösaikainen eli kielioppivirhe syntyy, kun muuttujaa ei ole esitelty, aliohjelman kutsussa on väärät parametrit tai kun kokonaisluku-muuttujaan sijoitetaan reaaliarvot. Pascalissa on muihin ohjelmointikieliin verrattuna tarkat säännöt, joten kielioppivirheiden poistamisen jälkeen suurin osa virheistä on jo löytynyt. Ajonaikainen virhe eli semanttinen virhe syntyy kun virheettömästi käännetty ohjelma yrittää esimerkiksi avata olemattoman tiedoston lukemista varten tai jakaa luvun nollalla. Loogiset virheet taas syntyvät kun ohjelma tekee niinkuin käskit mutta ei niin kuin haluat. Esimerkiksi muuttuja saattaa olla alustamatta tai laskutoimitukset saattavat olla virheellisiä. Tällainen virhe on vaikein löytää ja sen etsinnässä tutkintaohjelmasta on eniten apua. Muitakin virheitä on toki olemassa, esimerkiksi ympäristövirheet, joita voivat olla esim. laitevirheet. Versionhallintavirheessä ohjelma ei esimerkiksi kerro versiotaan. Testausvirheitä ovat mm. havaitsemattomat virheet. Virheiden vaikutus vaihtelee vähäisistä katastrofaalisiin.
|
2. Virheen etsinnästäPyri testatessasi siihen, että jokainen ohjelman haara tulee suoritetuksi ainakin kerran. Virheitä etsiessäsi tarkista ainakin seuraavat asiat:
2.1 Silmukan tarkastaminen
2.2 Numeeristen arvojen tarkastaminen
2.3 Merkkijonosyötteitten tarkastaminen
|
3. Turbo Pascalin debuggerin käyttö
3.1 Debuggauksen aloitusDebuggauksen aloittamisessa ovat seuraavat vaihtoehdot:
3.2 KeskeytysloukutKeskeytysloukku on rivi, jossa ohjelma pysähtyy. Kun tutkintaohjelma huomaa keskeytysloukun, se keskeyttää ohjelman ajon ja korostuspalkki osoittaa, missä lauseessa katkos on. Tämän jälkeen voit tutkia eri muuttujia, aloittaa askelluksen tai ajaa ohjelman seuraavaan keskeytysloukkuun. Voit keskeyttää ajon milloin tahansa myös CTRL-Break-näppäimellä. Ohjelma pysähtyy seuraavalle lähdekieliselle riville aivan kuin tällä olisi keskeytysloukku. Tärkeää on huomata, että keskeytysloukut ovat olemassa vain virheiden etsinnän aikana; niitä ei tallenneta EXE-tiedostoon, mikäli ohjelma käännetään levylle.
3.2.1. Keskeytysloukkujen asettaminenVoit asettaa keskeytysloukun Break/Watch/Toggle Breakpoint -komennolla tai Ctrl-F8-näppäimellä ja ajaa ohjelman Run/Run-komennolla tai Ctrl-F9-näppäimellä). Tämän tapahtuman jälkeen ohjelma pysähtyy aina, kun se saavuttaa kyseisen rivin. Voit asettaa useita keskeytysloukkuja (max 21), jolloin ohjelma pysähtyy jokaisen keskeytysloukun kohdalla. Keskeytysloukkuja ei tulisi sijoittaa sellaisille riveille, joilla ei ole suorittavaa lausetta. Esimerkiksi selitykset, kääntäjän ohjauskäskyt ja muuttujien esittelyt ovat rivejä, joille ei pidä asettaa keskeytyksiä.
3.2.2. Keskeytysloukkujen katsominen, editointi ja poistaminenSen jälkeen, kun olet asettanut keskeytysloukut, voit käynnistää ohjelman. Ohjelman ajo alkaa normaalisti. Keskeytysloukun kohdalla ohjelma pysähtyy ja tarvittava lähdekielinen tiedosto luetaan muistiin. Kohdistinpalkki näyttää keskeytysloukun sisältävän rivin, mutta on huomattava, että katkos ei näy korostettuna silloin, kun kohdistinpalkki on sen päällä. Mikäli Watch-ikkunaan on lisätty muuttujia tai lausekkeita, niiden arvot tulostuvat näyttöön. Tässä vaiheessa voit käyttää kaikkia virheidenetsintäkomentoja. Voit käyttää askellusta, tutkia ja vaihtaa muuttujien arvoja, lisätä lausekkeita Watch-ikkunaan ja poistaa niitä. Lisäksi voit lisätä ja poistaa keskeytysloukkuja. Komennolla Run/User Screen (Alt-F5) voit tutkia ohjelman tulostusta ja voit aloittaa ohjelman uudelleen alusta tai jatkaa ajoa seuraavaan katkokseen asti. Voit poistaa keskeytysloukun riviltä siirtämällä kohdistimen kyseiselle riville ja antamalla komennon Break/Watch/Toggle Breakpoint (Ctrl-F8) uudelleen. Kaikki katkokset voit poistaa komennolla Break/Watch/Clear All Breakpoints.
3.3 AskellusVoit suorittaa ohjelman yhden rivin ja pysähtyä tulosten tarkastamista varten. Kun ohjelma kutsuu aliohjelmaa, voit valita, suoritetaanko kutsu yhdellä kertaa vai käydäänkö aliohjelma läpi rivi riviltä. Mikäli Edit-ikkunassa on ohjelma, se pitää kääntää ennen virheiden etsinnän aloittamista. Tämän voit tehdä komennolla Compile/Make (F9) tai Run/Trace Into (F7). Edellinen kääntää ohjelman ja jälkimmäinen sekä kääntää ohjelman että sijoittaa kohdistinpalkin tämän ensimmäiselle riville. Tämän jälkeen voit suorittaa ko. rivin komennolla Run/Trace Into tai Run/Step Over. Näiden kahden komentojen ero on siinä, Trace Into-komento askeltaa myös lause- ja funktioaliohjelmat, kun taas Step Over-komento ajaa läpi nämä pysähtymättä. Seuraavassa on esitelty askelluksessa tarvittavat komennot ja selitetty lyhyesti kunkin toiminnan sisältö.
3.4 Jäljitysloukut
3.4.1 Jäljitysloukun asettaminenJäljitysloukkua käytetään muuttujan arvon seuraamiseen. Toiminto asetetaan päälle seuraavasti: maalataan haluttu muuttuja ja valitaan valikosta debug - add watch. Näytölle ilmestyy laatikko, jossa on oletuksena valittu muuttuja - hyväksytään OK:lla. Sen jälkeen valitaan debug - watch, jolloin näytön alareunaan ilmestyy ikkuna, joka näyttää kyseisen muuttujan arvojen vaihtumisen - mutta vain niin kauan, kuin ollaan ohjelmanosan "vaikutusalueella". Kun add - watch -ikkunaan valitaan aliohjelman muuttuja, niin watch -ikkunassa on kyseisen muuttujan kohdalla ilmoitus, että muuttuja on tuntematon. Kun ohjelma etenee aliohjelmaan saakka, niin kyseisen muuttujan kohdalle watch -ikkunaan ilmestyy muuttujan arvo. Toiminto on erittäin hyvä, kun halutaan seurata, kuinka muuttujan arvo vaihtelee esim. rekursiossa. Toiminnon saa päälle alueen maalauksen jälkeen myös painamalla oikeata hiiren painiketta ja valitsemalla add watch, sen jälkeen painetaan oikeata hiiren painiketta uudelleen ja valitaan watch. Kun jäljitysloukku on valittu watch -laatikkoon, niin se voidaan asettaa tilapäisesti niin, että se ei näytä arvoja (oikea hiiren painike watch-ikkunan päällä - disable) ja tuoda uudelleen käyttöön käyttöön (oikea hiiren painike watch-ikkunan päällä - enable), jolloin se näyttää sen arvon, joka on muuttujan arvona sillä hetkellä.
3.4.2 Jäljitysloukun poistaminenJäljitysloukku poistetaan painamalla oikeata hiiren painiketta watch-ikkunan päällä ja valitsemalla remove.
3.5 Arvojen muuttaminenEvaluate /modify -toimintoa käytetään arvojen tarkastamiseen ja muuttamiseen. Voit valita sen joko aliohjelman tai pääohjelman aikana tarkastaaksesi muuttujan arvon. Tällöin arvoa voi muuttaa ja yrittää tällä tavalla päästä esim. silmukkaan, johon ohjelma ei muuten päästä. Toiminto käynnistetään seuraavasti: debug - modify /evaluate. Näytölle avautuu ikkuna, jonka sisällä oleviin laatikoihin arvot asetetaan:
HUOM. Jos olet pääohjelmassa, niin et voi laittaa evaluate /modify -laatikkoon aliohjelman muuttujan nimeä, koska toiminto ei tunnista aliohjelman muuttujaa vielä pääohjelmassa, ja vaikka laittaisitkin aliohjelman muuttujalle oletusarvon pääohjelmassa, niin muuttuja huomioi vain sen syötteen, jonka pääohjelma antaa sille aliohjelman kutsun aikana.
3.6 Arvojen seurantaVoit seurata arvoja kolmen eri toiminnon avulla.
3.6.1 Go to cursorGo to cursor - toiminto mahdollistaa ohjelman ajon ja automaattisen pysähtymisen tietylle riville, jolle olet asettanut kursorin. Tällöin voit tutkia muuttujaa esim. evaluate /modify -ikkunassa. Toiminto käynnistyy valinnalla: run - go to cursor, ja katoaa, kun otat uudelleen saman valinnan sen jälkeen, kun ohjelma on pysähtynyt kursorin kohtaan.
3.6.2 Call stackCall stack luo pienen ikkunan ruudun alareunaan. Ikkunassa näkyvät kaikki aliohjelma- ja funktio-kutsut sekä niiden parametrien arvot, jotka muuttuvat automaattisesti ohjelman suorituksen aikana. Ikkuna käynnistetään valitsemalla: debug -call stack Tässä vaiheessa ohjelman ja aliohjelmien nimiä ei vielä näy, vaan ne ilmestyvät ikkunaan ohjelman etenemisen myötä. Ikkuna katoaa, jos näpäytät hiiren painiketta ikkunan ulkopuolella, ja saat sen takaisin valitsemalla uudelleen: debug - call stack.
3.6.3 OutputOutput -valinnalla voit seurata arvojen muuttumista sellaisena, kuin se tapahtuu ohjelman dos-tasolla. Toiminto otetaan käyttöön valitsemalla: debug - output, ja tällöin näytön ilmestyy musta ikkuna, johon tulevat samat, käyttäjälle palautetta antavat arvot, kuin dos-ikkunassa on, joten tämän toiminnon ansiosta arvoja ei tarvitse käydä tarkistamassa dos shell -komennolla.
3.7 Debuggauksen keskeytys /lopetusVoit palata Turbo Pascal ympäristöön painamalla mitä tahansa näppäintä
|
4. Virheilmoitukset
|
Lähteet
Testitietokanta
, testaussuunnitelma,
Testaus,
Department
of Computing and Information Science,
Turbo Pascal -opas,
Johdatus tiedojenkäsittelyyn,
Pascal-ohjelmointi, Turbo Pascal -ohjelman help-valikko
|
Sanasto
|
Tekijät
Jorma Hekkala Viimeistelty 3.12.1999
|