[Modelinterpreter] Java debug
Dévai Gergely
deva at elte.hu
Mon Mar 16 23:47:08 CET 2015
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"
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://plc.inf.elte.hu/pipermail/modelinterpreter/attachments/20150316/54893896/attachment.html>
More information about the Modelinterpreter
mailing list