Miksi Ohjelmat Kaatuvat

Miksi Ohjelmat Kaatuvat
Miksi Ohjelmat Kaatuvat

Video: Miksi Ohjelmat Kaatuvat

Video: Miksi Ohjelmat Kaatuvat
Video: Golden six kultainen kuusikko | Kenelle ja miksi? 2024, Marraskuu
Anonim

Erilaisia tehtäviä, jotka tänään ratkaistaan henkilökohtaisten tietokoneiden avulla, tarjoaa valtava joukko sovellusohjelmia. Ohjelmiston kanssa työskentelyn mukavuus riippuu suurelta osin sen luotettavuudesta, joka ilmaistaan hätätilanteiden puuttuessa. Monet ohjelmat kuitenkin kaatuvat epäedullisimmalla hetkellä. Miksi?

Miksi
Miksi

Poikkeusmekanismia käytetään seuraamaan ja käsittelemään erityisiä, epänormaaleja tai virheellisiä tilanteita, jotka syntyvät tietokoneohjelmien käytön aikana nykyaikaisten käyttöjärjestelmien valvonnassa. Poikkeuksia voivat olla laitteisto (prosessorin heittämä) ja ohjelmisto (itse sovelluksen tai jonkin ulkoisen laajennuksen komponentin heittämä).

Tyypistä riippumatta poikkeus voidaan saada kiinni ja käsitellä oikein. Sieppaamattomat poikkeukset menevät root-ajonaikaisen kirjaston käsittelijälle tai käyttöjärjestelmän asentamalle käsittelijälle. Jos näin tapahtuu, ohjelma kaatuu viestin tai epänormaalin päättymisikkunan kanssa (Windows). Jos käyttöjärjestelmän käsittelijä ei toiminut (esimerkiksi se poistettiin tarkoituksella), ohjelma kaatuu hiljaa. Siksi ohjelmat kaatuvat poikkeusten takia, joita ei voida käsitellä. Syyt poikkeusten esiintymiseen ovat erilaiset.

Valtaosassa tapauksia ohjelmat kaatuvat johtuen oman koodin suorittamisesta, joka sisältää suoria tai epäsuoria toteutusvirheitä. Luettelo hätätilanteiden mahdollisista syistä on hyvin pitkä. Nämä ovat sekä klassisia liukulukulukujen toimintavirheitä (esimerkiksi jakaminen 0: lla) että muistin kanssa työskentelyvirheitä (lukeminen tai kirjoittaminen prosessiosoitealueen ulkopuolelle, pääsy suojatuille sivuille, kirjoittaminen vain luku -muistialueelle), ylivuoto pinon vuoksi ääretön rekursio jne. Näissä tapauksissa heitetään laitteisto- tai käyttöjärjestelmäpoikkeuksia.

Implisiittisiin virheisiin kuuluu useita tapauksia, joissa syötetiedot suodatetaan puutteellisesti, osoitinarvojen validointi puuttuu ja paljon muuta. Tällaiset puutteet johtavat poikkeustilanteisiin vain tietyissä tapauksissa.

Toteutusvirheet löytyvät myös sovelluksen käyttämistä ulkoisista komponenteista. Esimerkiksi dynaamisissa kirjastoissa, jotka tarjoavat tarvittavat toiminnot, tai lisäosamoduuleissa. Ohjelmakoodi, joka on implisiittisesti ladattu prosessin osoiteavaruuteen (esimerkiksi tiettyjen API-toimintojen sieppaamiseksi), voi myös aiheuttaa ohjelman kaatumisen.

Monet komponentit ja kirjastot (esimerkiksi ADO Windowsissa) käyttävät ohjelmallista poikkeusmekanismia prioriteettina ilmoitettaessa virheistä. Poikkeusten puuttuminen tai puutteellinen käsittely tällaisella sovelluksella voi johtaa sen kaatumiseen jopa täysin vaarattomissa tilanteissa (kuten yhteyden katkeaminen tietokantaan).

Suositeltava: