Miks Programmid Kokku Jooksevad

Miks Programmid Kokku Jooksevad
Miks Programmid Kokku Jooksevad

Video: Miks Programmid Kokku Jooksevad

Video: Miks Programmid Kokku Jooksevad
Video: „SUHTEMINUTID“ | Mida teha, kui kodus koos perega passimisest juhe kokku jookseb? 2024, Detsember
Anonim

Tänapäeval personaalarvutite abil lahendatud ülesannete mitmekesisuse tagab tohutu rakenduseprogrammide olemasolu. Tarkvaraga töötamise mugavus sõltub suuresti selle töökindlusest, mis väljendub hädaolukordade puudumisel. Kuid paljud programmid kukuvad kokku kõige ebasobivamal hetkel. Miks?

Miks
Miks

Erandmehhanismi kasutatakse eriliste, ebanormaalsete või ekslike olukordade jälgimiseks ja lahendamiseks, mis tekivad kaasaegsete opsüsteemide kontrolli all olevate arvutiprogrammide töötamise ajal. Erandiks võivad olla riistvara (protsessori visatud) ja tarkvara (visatud on rakendus ise või mõni pistikprogrammiga väline komponent).

Sõltumata tüübist saab erandi tabada ja õigesti käsitseda. Püüdmata erandid lähevad käituse juurteegi käitlejale või opsüsteemi installitud käitlejale. Kui see juhtub, jookseb programm kokku sõnumi või ebanormaalse lõpetamisaknaga (Windowsis). Kui operatsioonisüsteemi käitleja ei töötanud (näiteks eemaldati see tahtlikult), siis "kukub vaikselt kokku". Seega kukuvad programmid kokku erandite tõttu, mida ei saa käsitleda. Erandite esinemise põhjused on erinevad.

Valdavas enamuses juhtudest kukuvad programmid kokku oma koodi käivitamise tõttu, mis sisaldab otseseid või kaudseid rakendusvigu. Hädaolukordade võimalike põhjuste loetelu on väga pikk. Need on nii klassikalised ujumisnumbrite operatsioonide vead (näiteks jagamine 0-ga) kui ka mäluga töötamise vead (lugemine või kirjutamine väljaspool protsessiaadressiruumi, juurdepääs kaitstud lehtedele, kirjutamine kirjutuskaitstud mälualale), ülevoolupakk lõpmatu rekursiooni tõttu jne. Sellistel juhtudel visatakse riistvara erandeid või opsüsteemi erandeid.

Kaudsed vead hõlmavad mitmesuguseid sisendandmete ebapiisava filtreerimise juhtumeid, kursori väärtuste valideerimise puudumist ja palju muud. Sellised puudused põhjustavad erandlikke olukordi ainult teatud juhtudel.

Rakendusvigu võib leida ka rakenduse kasutatavates välistes komponentides. Näiteks dünaamilistes raamatukogudes, mis pakuvad vajalikku funktsionaalsust, või lisamoodulid. Protsessi aadressiruumi kaudselt laaditud programmikood (näiteks teatud API-funktsioonide pealtkuulamiseks) võib põhjustada ka programmi krahhi.

Paljud komponendid ja teegid (näiteks ADO Windowsis) kasutavad vigadest teatamise prioriteedina programmilist erandimehhanismi. Erandite puudumine või mittetäielik käsitlemine sedalaadi rakenduste abil võib põhjustada selle krahhi ka täiesti kahjututes olukordades (näiteks ühenduse kaotamine andmebaasiga).

Soovitan: