arckép

Neuwirth István

programtervező informatikus MSc – ELTE

Computational and Software Techniques MSc – Cranfield, UK

Elérhetőség
pitta2@gmail.com
+36 30 329 3039

Valid XHTML 1.0 Transitional

Valid CSS!

2. óra (2012.09.18.)

Diák

gyak2.pdf

Feladatok

complex_orig.zip packagekbe szervezése a 21. diának megfelelően. Fordításhoz felsorolhatjuk az összes forrásfájlt a javac után vagy elég megadni a main metódust tartalmazó főosztályt vagy lásd alább a generikus megoldást. (feladat megoldása)

person_orig.zip kiegészítése, hogy forduljon a feladat. (feladat megoldása)

Command-line debug: lásd lent

Több packageből és osztályból álló projekt fordítása

Környezet beállítása

Csomagok

Rekurzív fordítás

A sok forrásfájlból álló programoknál a forrásfájlokat a fordítónak egyenként átadni elég macerás. Az egyik dolog, amit tehetünk, ha a main-t tartalmazó osztályt adjuk meg, mint egyetlen fordítandó osztály és a belőle hivatkozott osztályokat megkeresi és lefordítja a Java compiler.

javac [main függvény tartalmazó fájl neve]

Másik lehetőség, ha a forrásfájlok abszolút elérési útvonalából egy listafájlt készítenünk és azt átadjuk.

Windows:

dir /s /b *.java > [listafálj_neve]

Linux:

find -name *.java > [listafájl_neve]

Mac OSX:

find . -name "*.java" > [listafájl_neve]

Ezek után a fordítás:

javac @[listafájl_neve]

Hibakeresés (command-line debugging)

Az egyszerűség kedvéért egy korábbi példához nyúlunk vissza: printargs_debug.zip

A debugolás előtt úgy kell fordítanunk a programot, hogy a fordított bájtkód megőrizze a nyomkövetési információkat (-g kapcsoló):

javac -g PringArgs.java

Debugger indítása (továbbiakban a debugger shelljében ügyködve):

jdb

JDB-n belül breakpoint felvétele:

stop at PrintArgs:5

Program futtatása (osztálynévvel indítva):

run PrintArgs mici macko

Az előbbi indításnál fontos, hogy legyenek argumentumok felsorolva, különben nem ugrunk a ciklusmagba és a breakpoint érintése nélkül leáll a program.

A futtatást követően felfüggesztődik a program az első breakpoint elérésénél:

Breakpoint hit: "thread=main", PrintArgs.main(), line=5 bci=8
5            System.out.println((i + 1) + ". argumentum: " + args[i]);

Ezen a ponton a lokális változók listázásához:

locals

Továbbugrás a következő breakpointra:

cont

További parancsok:

help

Vissza