1 / 15

Hibakeresés, hibajavítás

Hibakeresés, hibajavítás. Hibajelenségek. Szintaktikai hiba: Csak értelmezés esetén fordul elő, hiszen a fordítóprogramok korábban, még a fordítási fázisban kijelzik, s nem is készül el a futtatható változat.

Download Presentation

Hibakeresés, hibajavítás

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Hibakeresés, hibajavítás

  2. Hibajelenségek • Szintaktikai hiba: • Csak értelmezés esetén fordul elő, hiszen a fordítóprogramok korábban, még a fordítási fázisban kijelzik, s nem is készül el a futtatható változat. • A hibajelenség a hibás utasításnál (vagy annak „környékén”) jelentkezik, csak ki kell javítani. • Végrehajtási hiba: • Futás során, a fordítóprogram által beépített hibafigyelő által adott hiba (pl. 0-val való osztás). • A leállás sorában szerepel a – rossz érték miatt – hibát okozó változó, s meg kell keresni, hogy hol romlott el az értéke.

  3. Hibajelenségek • Nem áll le a program: • Végtelen ciklusra utal. • A program láthatólag semmit nem csinál, mégsem áll le. • Rosszabb, ha valamit tesz is. Ekkor a program külső leállításakor általában meg lehet tudni az aktuálisan végrehajtott utasítást. Innen kiindulva meg kell keresni azt a ciklust, ami nem fejeződik be, majd meg kell találni a „be nem fejeződés” okát. • A jelenség lehet annak következménye is, hogy túl lassú a programunk  hatékonyság.

  4. Hibajelenségek • Nem ír ki semmit a program, illetve „részlegesen” ír ki: • Elfelejtettünk valamilyen kiíró utasítást tenni, vagy • rossz helyre írtuk ki az eredményt, vagy • a kiírások olyan ágon szerepelnek, amelyet nem mindig, vagy nem a kellő pillanatban hajtunk végre. • Tenni való: a kiíró utasítások „kibogarászása”, kijavítása, jó helyre tétele. • Rosszat ír ki a program: • Hasonló a végrehajtási hibák esetéhez.

  5. Hibakeresés • Akkor kezdődik, ha egy hibajelenséget tapasztalunk. Célja, hogy a hiba helyét megtaláljuk. • Alapelvei: • A hibakeresési eszközök használata előtt célszerű alaposan megvizsgálni a programot, és a program logikája alapján megkeresni a hiba okát. • Ha a programban hibát találunk, akkor ennek a program más részére is lehet hatása, azaz elképzelhető, hogy újabb hibákat fogunk találni. • A hibák száma és súlyosságuk általában a program méreténél sokkal gyorsabban növekszik.

  6. Hibakeresési módszerek • Indukciós módszer: • Indukció: abból a tényből, hogy nagy számú „tárgynak” meghatározott tulajdonsága van és közös „nemhez” tartozik, arra következtethetünk, hogy az adott „nemhez” tartozó összes „tárgynak” megvan ez az ismertető jegye. • Kiindulunk a rendelkezésre álló teszteset-eredményekből, majd megpróbáljuk őket rendezni. Azokat a teszteseteket is célszerű megvizsgálni, amelyek nem idézik elő az adott hibát. A rendezett adatokból megpróbálunk valamilyen feltevést tenni a hiba okára vonatkozóan. A legelső feltevés, hogy a program csak azokra az esetekre hibás, amelyeket már kipróbáltunk és rájuk rossz eredményt kaptunk. Ha ezt igazolni tudjuk, akkor következhet a hiba helyének meghatározása, majd a hiba kijavítása. Ellenkező esetben a hibás bemenő adatok körét próbáljuk meg fokozatosan bővíteni, újabb teszteléssel. Igazoljuk az egyre bővülő adathalmazra a program hibás működését mindaddig, amíg csak lehet. Végül eljutunk a bemenő adatoknak ahhoz a halmazához, amelyre a program hibás, s egy másikhoz, amelyre helyes. Ezután meg kell állapítani, hogy a programon átvezető teszt utak mely ágai azok, amelyek a hibás tesztesetnek megfelelnek, s melyek azok, amelyek nem. Azokon a programágakon kell keresni a hibát, amelyek csak a hibás tesztesetekhez tartoznak.

  7. Hibakeresési módszerek • Dedukciós módszer: • Dedukció: abból a tényből, hogy az adott „nemhez” tartozó összes „tárgy” meghatározott ismertetőjeggyel rendelkezik, arra következtethetünk, hogy bizonyos, az adott „nemhez” tartozó „tárgyak” szintén rendelkeznek a szóban forgó ismertetőjeggyel. • A módszer lényege az, hogy egyre szűkíti a hiba lehetséges okainak körét. • A meglévő teszteset eredményekből adódó mindenféle lehetséges okot feltételezni kell az első lépésben, majd ezek közül ki kell küszöbölni azokat, amelyek a részletesebb vizsgálat során nem állják meg a helyüket. Ha egy feltevést teszünk, ugyanúgy igazolnunk kell,mint az előző módszer esetén. Ha nem sikerül, akkor újabb információkat kell gyűjtenünk a hibakereséshez a hibajelenségről. Ha elérkeztünk a hibás adatok köréhez, akkor már ugyanaz a teendő, mint az előző esetben volt.

  8. Hibakeresési módszerek • Visszalépéses technika: • A legismertebb hibakeresési módszer. • Kiindulunk a hiba előfordulásának helyétől, és a programot visszafelé hajtjuk végre mindaddig, míg a végrehajtás eredményét hibásnak találjuk. • Teszteléssel segített hibakeresés: • Olyan tesztesetet végzünk el, amely segítségével egy ismert hibát akarunk előidézni a programban. • Ezeknek a teszteseteknek az a jellegzetességük, hogy csak egyetlen feltételt fednek le. • Ezt a módszert általában nem önállóan, hanem az előző három segítésére használják.

  9. Hibakeresési eszközök • A programozási környezet olyan elemei, amelyek a hiba okának megállapítását, a hiba helyének megkeresését teszik könnyebbé azzal, hogy futás közbeni információt szolgáltatnak a programról. • A jó fordítóprogramok rendelkeznek ún. tesztelő üzemmóddal, amelyben a tesztelő utasításokat is bele kell fordítani a célprogramba, normál üzemmódban azonban nem.

  10. Hibakeresési eszközök • Kiírás: • Adatkiírások elhelyezésére alkalmas. • Nyomkövetés: • A végrehajtott utasítások követése a programban. • Adat-nyomkövetés: • A változókat vizsgáljuk. • Nyomkövetés a hibától visszafelé: • Akkor lép életbe, ha a program futási hibával megszakad.

  11. Hibakeresési eszközök • Töréspontok elhelyezése: • A töréspontok a program olyan utasításai, amelyeknél a végrehajtásnak meg kell állnia. • A felhasználó információt szerezhet a program állapotáról, majd folytatódhat a végrehajtás. • Leálláskor a felhasználó dönthet a futtatás abbahagyásáról, illetve folytatásáról. • Lépésenkénti végrehajtás: • A program minden utasítására egy töréspontot definiál.

  12. Hibakeresési eszközök • A hiba helyének és okának kijelzése: • Fordítóprogramok általában rendelkeznek olyan lehetőségekkel, hogy a futás közbeni ellenőrzéseket beépítsék a program kódjába, illetve kihagyják belőle. • A kihagyás a már biztosan helyes programnál futási időt csökkentő tényező lehet, ezért érdemes a kész programokat így lefordítani. • Állapotellenőrzés: • Hasonlít az előzőre, de a futás közbeni teljes állapotot ellenőrzi. • Alkalmas lehet feltételes töréspontok feltételes kiírásának elhelyezésére a programban.

  13. Tipikus hibák • Gépelési hibák. • Elágazás szervezési hibák. • Ciklusszervezési hibák. • Bemeneti adatok hibái. • Kimeneti adatok hibái. • File-ok hibái. • Változókkal kapcsolatos hibák. • Kifejezések hibái. • Eljárások hibái. • Grafikai hibák.

  14. Hibajavítás • Akkor kezdődik, amikor a hibakeresés véget ért. • Alapelvei: • A hibát kell kijavítani, nem csak a tüneteit megszüntetni. • Amíg a hiba helyét és okát pontosan nem találtuk meg, addig ne kezdjünk bele a javításba! • A hibajavítás után a programot alapos tesztelésnek kell alávetni. • Annak a valószínűsége, hogy egy hibát jól kijavítottunk, a program méretével arányosan csökken. • A hibajavítás visszanyúlhat a program tervezési fázisába is.

  15. Köszönöm a figyelmet! 

More Related