H IBAKERESÉS, HIBAJAVÍTÁS. H IBAJELENSÉGEK Szintaktikai hiba:  Csak értelmezés esetén fordul elő, hiszen a fordítóprogramok korábban, még a fordítási.

Slides:



Advertisements
Hasonló előadás
Készítette: Kosztyán Zsolt Tibor
Advertisements

Szerver oldali programozás
T ESZTELÉS. C ÉLJA Minél több hibát találjunk meg! Ahhoz, hogy az összes hibát fölfedezzük, kézenfekvőnek tűnik a programot az összes lehetséges bemenő.
Összefoglalás Hardver,szoftver,perifériák Memóriák fajtái
Adatelemzés számítógéppel
Programozási tételek, és „négyzetes” rendezések
Az utólagos ellenőrzésre és az előzetes biztosításra épülő rendszerek összehasonlítása dr. Csikesz Tamás.
Hatékonyságvizsgálat, dokumentálás
C++ programozási nyelv Gyakorlat hét
Rendszertervezés GIMP.
Rendszerfejlesztés gyakorlat - © Fülöp Lajos
Rendszerfejlesztés.
Matematika és Tánc Felkészítő tanár: Komáromi Annamária
Programozási alapismeretek 9. előadás
Determinisztikus programok. Szintaxis: X : Pvalt program változók E : Kifkifejezések B : Lkiflogikai kifejezések C : Utsutasítások.
MI 2003/ A következőkben más megközelítés: nem közvetlenül az eloszlásokból indulunk ki, hanem a diszkriminancia függvényeket keressük. Legegyszerűbb:
Budapesti Műszaki és Gazdaságtudományi Egyetem Elektronikus Eszközök Tanszéke A programozás alapjai 1. (VIEEA100) 9. előadás.
GNSS elmélete és felhasználása Fázismérések lineáris kombinációi. A ciklustöbbértelműség feloldása.
Hibakezelés és Tesztelés a Visual Studio.NET-ben
Programozás alapjai A programozás azt a folyamatot jelenti, melynek során a feladatot a számítógép számára érthető formában írjuk le. C++, Delphi, Java,
Programozási alapismeretek 9. előadás. ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 9. előadás2/
C A C nyelv utasításai.
Programozás módszertan
Dolgozat futás közbeni értékadásra Készítette: Rummel Szabolcs Elérhetőség:
Algoritmizálás Göncziné Kapros Katalin humaninformatika.ektf.hu.
Dr. Szalka Éva, Ph.D.1 Statisztika II. VII.. Dr. Szalka Éva, Ph.D.2 Mintavétel Mintavétel célja: következtetést levonni a –sokaságra vonatkozóan Mintavétel.
A C++ programozási nyelvSoós Sándor 1/12 C++ programozási nyelv Gyakorlat - 8. hét Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet.
Programozás I. Ciklusok
Programozás I. Egymásba ágyazott szelekciók, többágú szelekció
Vizuális és web programozás II.
Szélességi bejárás A szélességi bejárással egy irányított vagy irányítás nélküli véges gráfot járhatunk be a kezdőcsúcstól való távolságuk növekvő sorrendjében.
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
A LOGISZTIKAI RENDSZEREK MINŐSÉGBIZTOSÍTÁSA
A PHP (PHP: Hypertext Preprocessor) nyílt forráskódú, számítógépes szkriptnyelv, legfőbb felhasználási területe a dinamikus weboldalak készítése. Emiatt.
A problémamegoldás lépései
Scenáriók készítése Dr. Kollár József Magyar Coachszövetség Közhasznú Alapítvány.
Készítette: Gergó Márton Konzulens: Engedy István 2009/2010 tavasz.
Lénárt Szabolcs Páll Boglárka
Ciklusok (iterációk).
Szintaktikai, szemantikai szabályok
1.3. Pascal program felépítése Az els ő program. Program ; … Begin … End. Program fej Deklarációs rész Végrehajtó rész.
1.4. Fordítás, szerkesztés, az objektumkönyvtár használata.
3.2. A program készítés folyamata Adatelemzés, adatszerkezetek felépítése Típus, változó, konstans fogalma, szerepe, deklarációja.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
Alapsokaság (populáció)
Prímrekord, 2005 Csajbók Tímea, Farkas Gábor, Kasza János.
Algoritmusok.
Miskolci Egyetem Gazdaságtudományi Kar Üzleti Információgazdálkodási és Módszertani Intézet Mintavételes Eljárások.
Programozás III KIVÉTEL.
Mesterséges Intelligencia 1. Eddig a környezet teljesen megfigyelhető és determinisztikus volt, az ágens tisztában volt minden cselekvésének következményével.
Programozás, programtervezés
Török Katalin és Marosi Nóra 11/c. Pascal: Az es években megjelent magas szintű programozási nyelv, közel áll az emberi gondolkodáshoz. Nevét.
Valószínűségszámítás II.
Szakértői bizonyítás a büntető eljárásban
Programozás III KIVÉTEL. KIVÉTELKEZELÉS Hibátlan program nincs!!! eddig hiba esetén leállt a program. Példa ilyen hibákra: ─ ArrayBoundsOfException (tömb.
Összeállította: Sashalmi Tibor
Algoritmusok és Adatszerkezetek Egy kifejezés lengyelformára hozása - bemutató.
Algoritmizálás, adatmodellezés tanítása 6. előadás.
Adatszerkezetek és algoritmusok 2008/ Algoritmus Az algoritmus szó eredete a középkori arab matematikáig nyúlik vissza, egy a i.sz. IX. században.
Programok készítése és futtatása. Integrált fejlesztői környezet (IDE) tartalmaz:  szövegszerkesztőt a program forráskódjának szerkesztésére,  fordítóprogramot.
Adatstruktúrák Algoritmusok Objektumok
Gépészeti informatika (BMEGEMIBXGI)
Istvan Simon, CEO & Founder
Algoritmizálás.
Beépített függvények használata programozáskor
Hernyák Zoltán Magasszintű Programozási Nyelvek I.
Programozási nyelvek alapfogalmai
Számítógépes algoritmusok
Informatikai gyakorlatok 11. évfolyam
Algoritmus készítés.
Előadás másolata:

H IBAKERESÉS, HIBAJAVÍTÁS

H IBAJELENSÉ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. 2

H IBAJELENSÉ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. 3

H IBAJELENSÉ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. 4

H IBAKERESÉ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. 5

H IBAKERESÉ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. 6

H IBAKERESÉ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. 7

H IBAKERESÉ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. 8

H IBAKERESÉ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. 9

H IBAKERESÉ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. 10

H IBAKERESÉ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. 11

H IBAKERESÉ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. 12

T IPIKUS 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. 13

H IBAJAVÍ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. 14

K ÖSZÖNÖM A FIGYELMET !  15