Kaatumisilmoitusten keräämisen ja analysoinnin automatisointi
Kilpeläinen, Ville (2018)
Kilpeläinen, Ville
Tampereen ammattikorkeakoulu
2018
All rights reserved
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:amk-201804245321
https://urn.fi/URN:NBN:fi:amk-201804245321
Tiivistelmä
Novatron Oy halusi kehittää ohjelmistojensa vianhallintaprosessia automatisoimalla kaatumisvedosten keräämisen kriittisten ohjelmistovikojen osalta. Tämän avulla haluttiin varmistaa, että kriittiset viat saadaan havaittua mahdollisimman aikaisessa vaiheessa tarpeellisella tarkkuudella, jotta ohjelmiston laatua voidaan parantaa.
Lähdekoodissa esiintyvät virheet voivat aiheuttaa poikkeuksen sovelluksen suorituksen aikana. Poikkeus voi johtua esimerkiksi laittomasta muistiosoiteviittauksesta tai puskurin ylivuotamisesta. Käsittelemättömät poikkeukset johtavat suoritettavan sovelluksen kaatumiseen.
Windows-käyttöjärjestelmä tarjoaa Structured Exception Handling -mekanismin (SEH), jonka avulla C++ -kielellä kehitetyn ohjelmiston poikkeuskäsittelyä voidaan laajentaa hardware-tason poikkeuksiin. SEH:n rajapinnan avulla on mahdollista rekisteröidä sovellukseen oletuspoikkeuskäsittelijä, jota kutsutaan, kun sovellus kohtaa poikkeuksen jolle ei löydy muuta käsittelijää. Käyttöjärjestelmän rajapinnat mahdollistavat kaatumisvedoksen kirjoittamisen poikkeuskäsittelijästä.
Kaatumisvedosten keräämistä varten on kehitetty useita valmiita kirjasto- ja työkalukokoelmia, joiden avulla kaatumisvedokset pystytään myös lähettämään takaisin kehittäjälle ja niiden sisältöä pystytään analysoimaan. Kirjasto- ja työkalukokoelmista Googlen kehittämä Breakpad vaikutti tarkoitukseen parhaiten soveltuvalta valinnalta. Sen etuihin kuuluu alustariippumattomuus ja se, että sovelluksen symbolitaulut voidaan erottaa jaettavasta ohjelmasta.
Kaatumisvedokset tarjoavat tehokkaan keinon sovelluksen viimeisten hetkien tarkasteluun ennen kaatumista. Kaatumishetkeltä kerättävän datan avulla vian syitä voidaan myös tilastoida ja luoda arvio sen kriittisyydestä. Kerätyn datan avulla vika pystytään myös toistamaan mahdollisimman samanlaisessa ympäristössä kuin se on oikeasti esiintynyt. Kaatumisvedos ei kuitenkaan tarjoa kaikenkattavaa näkemystä kaatumisen lopullisista syistä, mutta tarjoaa hyvän lähtökohdan vian syyn selvittämiselle.
Lähdekoodissa esiintyvät virheet voivat aiheuttaa poikkeuksen sovelluksen suorituksen aikana. Poikkeus voi johtua esimerkiksi laittomasta muistiosoiteviittauksesta tai puskurin ylivuotamisesta. Käsittelemättömät poikkeukset johtavat suoritettavan sovelluksen kaatumiseen.
Windows-käyttöjärjestelmä tarjoaa Structured Exception Handling -mekanismin (SEH), jonka avulla C++ -kielellä kehitetyn ohjelmiston poikkeuskäsittelyä voidaan laajentaa hardware-tason poikkeuksiin. SEH:n rajapinnan avulla on mahdollista rekisteröidä sovellukseen oletuspoikkeuskäsittelijä, jota kutsutaan, kun sovellus kohtaa poikkeuksen jolle ei löydy muuta käsittelijää. Käyttöjärjestelmän rajapinnat mahdollistavat kaatumisvedoksen kirjoittamisen poikkeuskäsittelijästä.
Kaatumisvedosten keräämistä varten on kehitetty useita valmiita kirjasto- ja työkalukokoelmia, joiden avulla kaatumisvedokset pystytään myös lähettämään takaisin kehittäjälle ja niiden sisältöä pystytään analysoimaan. Kirjasto- ja työkalukokoelmista Googlen kehittämä Breakpad vaikutti tarkoitukseen parhaiten soveltuvalta valinnalta. Sen etuihin kuuluu alustariippumattomuus ja se, että sovelluksen symbolitaulut voidaan erottaa jaettavasta ohjelmasta.
Kaatumisvedokset tarjoavat tehokkaan keinon sovelluksen viimeisten hetkien tarkasteluun ennen kaatumista. Kaatumishetkeltä kerättävän datan avulla vian syitä voidaan myös tilastoida ja luoda arvio sen kriittisyydestä. Kerätyn datan avulla vika pystytään myös toistamaan mahdollisimman samanlaisessa ympäristössä kuin se on oikeasti esiintynyt. Kaatumisvedos ei kuitenkaan tarjoa kaikenkattavaa näkemystä kaatumisen lopullisista syistä, mutta tarjoaa hyvän lähtökohdan vian syyn selvittämiselle.