[Modelinterpreter] Java debug

kmate at caesar.elte.hu kmate at caesar.elte.hu
Tue Mar 17 09:46:43 CET 2015


Sziasztok!

A Java debugger API-kat összefogó JPDA specifikációt tudtommal minden  
szóba jövő virtuális gép támogatja - nem tudok más ilyen jellegű,  
kvázi konkurens megoldásról. Valósznűleg a JDT nem véletlen másolta be  
a kódot, futtatáshoz ugyanis csak JRE kell az Eclipse-nek, fordtója  
meg saját van, igy csak ez hiányzott nekik. Lehet, hogy mi is igy  
járhatunk el, a specifikáció JDI része az utóbbi években nem sokat  
változott tudtommal. A JDT-re még kockázatosabbnak tűnik épiteni,  
magasabb szintű API, komplikáltabb lehet az ő feature-jeiket  
kerülgetni. Ha licensz gondok lennének, akkor meg ők sem tehették  
volna be. De nem tudom most mi a legjobb megoldás, én a JDT API-t nem  
ismerem.

Üdv,
  Máté

Idézet (Dévai Gergely <deva at elte.hu>):

> Sziasztok!
>
> Elso"sorban a Java/Moka debug kapcsán érintettek figyelmébe:
>
> A Moka execution engine-t a korábban megbeszélteknek megfelelo"en  
> úgy szeretnénk megvalósítani, hogy a Java debugger szolgáltatásait  
> használjuk. Ehhez szükség van egy olyan API-ra, ami képes egy VM-et  
> indítani, breakpoint-okat manipulálni és debug eseményeket lekérdezni.
>
> Máté tavalyi compiler-moka-jdi-javaUML2  
> <https://plc.inf.elte.hu/modelinterpreter/trac/browser/experiments/compiler-moka-jdi-javaUML2> példája erre a célra a com.sun.jdi.VirtualMachineosztályt  
> használja.
> Ezzel kapcsolatban egyrészt felmerül, hogy nem kötjük-e magunkat  
> hozzá ezáltal egy konkrét JVM megvalósításhoz?
> Másrészt meg kell oldani a kapcsolódó függo"ség kezelését: A case  
> study a lib könyvtárában tartalmazza az Oracle-to"l letöltheto"  
> JDK-ból a tools.jar-t, ami tartalmazza a szükséges osztályokat.  
> Kérdés, hogy egy eclipse projektben szabad-e a JDK egy részét  
> binárisan terjeszteni? A weben írnak olyan véleményeket, hogy a JDK  
> csak egyben terjesztheto". Ha nem csomagoljuk be ezt a jar-t, akkor  
> meg el kell várnunk, hogy megfelelo" JDK legyen a felhasználóink  
> gépén, és dinamikusan kell feloldaunk a függo"ségünket.
> Ugyanakkor valamelyik org.eclipse.jdt.debug plugin-ban is megvannak  
> a com.sun.jdi.... csomagok, ám ez nem része a plugin publikus  
> API-jának, így ha ezzel oldjuk fel a függo"séget, akkor warning a  
> jutalom. A veszély nyilván az, hogy ezt a részt bármikor átírhatják  
> nem kompatibilis módon.
>
> Azon tipródtam ma sokat, hogy lehetne-e használni a com.sun.jdi.*  
> helyett az org.eclipse.jdt.* csomagok publikus API-ját? Ezek a  
> csomagok standard eclipse pluginokban vannak, és JVM-függetlenül  
> próbálnak Java szolgáltatásokat (többek között futtatás, debugolás)  
> nyújtani. A breakpoint-ok elhelyezésénél még stratum beállítására  
> leheto"séget adó függvényt is láttam. Az API használata nem  
> triviális, mert többnyire egy halom interfészt nyújt, és elvárja,  
> hogy a JVM implementációk extension pointokon keresztül adják az  
> implementációt. Úgy tu"nik, hogy a JavaRuntime.getVMInstallTypes(),  
> majd a IVMInstallType.createVMInstall(String id) függvényeken át  
> lehet VM-et kapni. Boldi, a saját típusú Launch konfigrációk nem  
> valami org.eclipse.jdt.launching alá tartozó típust adnak véletlenül?
>
> Vélemények, segítség jöhet!
>
> Üdv,
> Gergo"
>
>





More information about the Modelinterpreter mailing list