Debuggeri

Wikipedia
Loikkaa: valikkoon, hakuun

Debuggeri eli virheenjäljittäjä on tietokoneohjelma, jota käytetään muiden tietokoneohjelmien ohjelmointivirheiden jäljittämiseen ja korjaamiseen. Virheenjäljittäjät ovat ohjelmoijien työkaluja, ja niitä käytetään yleisimmin silloin, kun ohjelman lähdekoodi on saatavilla. Virheen etsimistä virheenjäljittäjän avulla kutsutaan yleisesti tietokonealan ihmisten keskuudessa virheenkorjaukseksi ("debuggaukseksi").

Virheenjäljittäjä antaa mahdollisuuden tarkastella tietokoneen ja tietokoneohjelman sisäistä tilaa ohjelman suorituksen aikana. Erilaiset virheenjäljittäjät antavat tarkasteluun erilaisia mahdollisuuksia riippuen tarkasteltavasta ohjelmasta ja ohjelman ajonaikaisista oikeustasoista. Virheenjäljittäjän käytön tarkoituksena on useimmiten selvittää ohjelmiston virheitä, mutta sitä voidaan käyttää myös ohjelmiston toiminnan yleiseen selvittämiseen ja takaisinmallinnukseen (eng. reverse engineering). Virheenjäljittäjää voidaan käyttää tällöin myös laittomiin tarkoituksiin, kuten kaupallisten ohjelmistojen kopiointisuojausten murtamiseen.

Yksi virheenjäljittäjän perustoiminto on asettaa ohjelmiston ohjelmakoodiin ns. break point, joka yksinkertaisimmillaan on kutsu, joka siirtää ohjelman suorituksen virheenjäljittäjään. Kun tietokoneohjelma sitten käynnistetään ja se saapuu break pointin kohdalle, tietokoneen suoritus siirtyy virheenjäljittäjään. Siirtohetkellä virheenjäljittäjä tallentaa välittömästi ajonaikaisen suorituksen, mm. rekistereiden ja muistin tilan ja antaa ohjelmoijalle mahdollisuuden tutkia niiden sisältöä. Tiedoista on usein hyötyä ohjelman toiminnan tarkastamisessa ja virheiden selvittämisessä.

Virheenjäljittäjillä voidaan jäljittää ohjelman suoritusta ja esimerkiksi paikallistaa kohta, jossa tietokoneohjelma kaatuu. Uudemmissa virheenjäljittäjissä voidaan ohjelman suoritusta seurata käsky käskyltä debuggerin käyttöliittymästä sekä lukea muuttujien ja olioiden sisältöä. Muistissa olevia tietoja voidaan paitsi lukea, myös usein muokata suoraan virheenjäljittäjästä. Virheenjäljittäjät tarjoavat usein tietokoneen ajonaikaiseen muistiin suoran näkymän. Lisäksi useimmat virheenjäljittäjät tarjoavat näkymän tietokoneen rekistereihin, pinoon, konekoodiin ja tietokoneohjelman lähdekoodiin, mikäli ohjelmisto on käännetty siten, että symbolitieto lähdekoodista on saatavilla.

Kerneli-tilassa toimivilla debuggereilla, kuten SoftICE, voidaan tarkkailla jopa kerneli- ja laiteajuritason suoritusta.

Virheenjäljittäjä soveltuu hyvin useimpien ohjelmistojen loogisten virheiden jäljittämiseen, koska se tarjoaa ohjelmiston suoritukseen ajonaikaisen näkymän. Sen avulla ei kuitenkaan voida jäljittää kaikentyyppisiä virheitä. Ongelmallisia ovat muun muassa virheet, joissa tutkittava ohjelma toimii yhteistyössä jonkun toisen samanaikaisesti joko toisessa prosessissa tai toisessa tietokoneessa toimivan järjestelmän kanssa. Virheenjäljittäjä ei voi pysäyttää toista järjestelmää tai säiettä, tai saada toista prosessia toimimaan ajan suhteen täysin samalla tavalla kuin virhetilanteen syntyessä. Reaaliaikajärjestelmät, kuten esimerkiksi auton ABS-järjestelmän ohjaus, ovat myös järjestelmiä, joiden toimintaa ei voida luotettavasti testata tavallisilla virheenjäljittäjillä.

Kirjallisuutta[muokkaa | muokkaa wikitekstiä]

  • Jonathan B. Rosenberg: How Debuggers Work: Algorithms, Data Structures, and Architecture. John Wiley & Sons, 1996. ISBN 0-471-14966-7.

Katso myös[muokkaa | muokkaa wikitekstiä]

Tämä tietotekniikkaan liittyvä artikkeli on tynkä. Voit auttaa Wikipediaa laajentamalla artikkelia.