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 © Miklós Árpád, BMF NIK, 2006–2007
[email protected]
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.
V1.1
2007. február 5.
© Miklós Árpád, BMF NIK, 2006–2007
[email protected]
2
Programok fordítása és futtatása • Fordítás
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 ...”)
Fordítási konfigurációk kezelése („Configuration Manager ...”)
• Futtatás
Futtatás hibakereséssel („Start Debugging”)
Futtatás hibakeresés nélkül („Start Without Debugging”)
V1.1
2007. február 5.
© Miklós Árpád, BMF NIK, 2006–2007
[email protected]
3
Töréspontok elhelyezése hibakereséshez
A programban elhelyezett töréspontoknál („breakpoint”) megáll a program végrehajtása
V1.1
2007. február 5.
© Miklós Árpád, BMF NIK, 2006–2007
[email protected]
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)
V1.1
2007. február 5.
© Miklós Árpád, BMF NIK, 2006–2007
[email protected]
5
Megfigyelt változók (1)
V1.1
2007. február 5.
© Miklós Árpád, BMF NIK, 2006–2007
[email protected]
6
Megfigyelt változók (2)
V1.1
2007. február 5.
© Miklós Árpád, BMF NIK, 2006–2007
[email protected]
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
V1.1
2007. február 5.
© Miklós Árpád, BMF NIK, 2006–2007
[email protected]
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
A program újrafordítása és újraindítása Leállítás és kilépés a hibakeresőből
• A program megállított állapotban lépésenként is futtatható Futtatás tovább A futtatás lehetséges a („Run”) 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 Futtatás belépéssel pontig („Run to Cursor”), („Step Into”) illetve folyamatosan tovább Futtatás átlépéssel („Run”). („Step Over”) V1.1
2007. február 5.
© Miklós Árpád, BMF NIK, 2006–2007
[email protected]
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 Program osztály C# nyelven írt Main() metódusa hívta* *
V1.1
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. 2007. február 5.
© Miklós Árpád, BMF NIK, 2006–2007
[email protected]
10
Memória, regiszterek, gépi kód
V1.1
2007. február 5.
© Miklós Árpád, BMF NIK, 2006–2007
[email protected]
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 nem a köztes kód)
A virtuális memória tartalma a megadott címtől kezdve
A processzor (x86) belső regisztereinek tartalma
V1.1
2007. február 5.
© Miklós Árpád, BMF NIK, 2006–2007
[email protected]
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
V1.1
2007. február 5.
© Miklós Árpád, BMF NIK, 2006–2007
[email protected]
13