Vizuális és eseményvezérelt programozás 2006 2007, II. félév BMF NIK Tesztelés és hibajavítás Microsoft Visual Studio 2005 fejlesztőkörnyezetben Fordítás és futtatás Tesztelés és hibakeresés Töréspontok, automatikus és helyi változók, megfigyelt változók Adatsúgók és adatmegjelenítők Futtatás lépésenként, metódusok átlépése, belépés metódusokba, futtatás adott pontig Hívási verem Memória, regiszterek, gépi kód Objektum-tesztpad Egyszerű példaalkalmazás hibakeresése és -javítása miklos.arpad@nik.bmf.hu
Hallgatói tájékoztató A jelen bemutatóban található adatok, tudnivalók és információk a számonkérendő anyag vázlatát képezik. Ismeretük szükséges, de nem elégséges feltétele a sikeres zárthelyinek, illetve vizsgának. Sikeres zárthelyihez, illetve vizsgához a jelen bemutató tartalmán felül a kötelezőirodalomként megjelölt anyag, a gyakorlatokon szóban, illetve a táblán átadott tudnivalók ismerete, valamint a gyakorlatokon megoldott példák és az otthoni feldolgozás céljából kiadott feladatok önálló megoldásának képessége is szükséges. 2
Fordítás Programok fordítása és futtatása Fordítás ( Build... ) Újrafordítás ( Rebuild... ) Eddigi fordítások eredményének törlése ( Clean... ) Kötegelt fordítás ( Batch Build... ) Futtatás Fordítási konfigurációk kezelése ( Configuration Manager... ) Futtatás hibakereséssel ( Start Debugging ) Futtatás hibakeresés nélkül ( Start Without Debugging ) 3
Töréspontok elhelyezése hibakereséshez A programban elhelyezett töréspontoknál ( breakpoint ) megáll a program végrehajtása 4
Töréspontok, automatikus és helyi változók A programban elhelyezett töréspontoknál megáll a végrehajtás Automatikus változók( Autos ): az aktuális és a megelőzőkódsorban szereplő változók értéke Töréspontok( Breakpoints ) adatai (állapot, típus, pontos pozíció, feltétel, eddigi megállások száma) Helyi változók( Locals ): az aktuális blokkban deklarált helyi változók értéke (a this értéke is) 5
Megfigyelt változók (1) 6
Megfigyelt változók (2) 7
Adatsúgók és adatmegjelenítők Adatsúgó( Data Tip ): az egérmutatóalatti változóértékének mélyfelderítése Adatmegjelenítő( Data Visualizer ): a kijelölt adatelem vagy tulajdonság értékének megtekintése speciális (szöveges, XML, HTML, adatbázis stb.) formátumban 8
Program futtatása lépésenként Hibakeresés közben a program bármikor megállítható A program megállítása Leállítás és kilépés a hibakeresőből A program újrafordítása és újraindítása A program megállított állapotban lépésenként is futtatható A futtatás lehetséges a metódusokba valóbelépéssel ( Step Into ), metódusok átlépésével ( Step Over ), az aktuális metódus végéig ( Step Out ) vagy adott pontig ( Run to Cursor ), illetve folyamatosan tovább ( Run ). Futtatás belépéssel ( Step Into ) Futtatás tovább ( Run ) Futtatás átlépéssel ( Step Over ) Futtatás adott pontig ( Run to Cursor ) Futtatás az aktuális metódus végéig ( Step Out ) 9
A metódushívási verem ( Call Stack ) A hívási veremben láthatóa metódushívások láncolata, amely a megállított program aktuális utasításáig vezetett A hívási verem egyes sorai alapján látható, hogy melyik metódus mely pontjáról hívódott meg az aktuális programsort tartalmazó kód. A hívó metódusok változói a hívási verem vizsgálata közben szintén elemezhetők, elősegítve a hibák felderítését. A programot a Form1 osztály C#nyelven írt button1_click() metódusában állítottuk meg A fenti metódust a Programosztály C#nyelven írt Main() metódusa hívta * * Ha a hívási veremben a hívómetódus helyén az [External Code] felirat látható, akkor a közvetlen hívókód nagy valószínűséggel nem a programozó által írt kód vagy nem ún. felügyelt kód, és alapértelmezésben nem látható a hívási veremben. 10
Memória, regiszterek, gépi kód 11
Memória, regiszterek, gépi kód A JIT fordítás után a processzoron (x86) ténylegesen futógépi kód (ez nema köztes kód) A virtuális memória tartalma a megadott címtől kezdve A processzor (x86) belső regisztereinek tartalma 12
Objektum-tesztpad ( Object Test Bench ) Az objektum-tesztpad segítségével objektumpéldányokat hozhatunk létre egy grafikus felületen Létrehozás után meghívhatjuk a létrejött példány metódusait és megvizsgálhatjuk az eredményt 13