[Modelinterpreter] jdt + moka launch
kmate at caesar.elte.hu
kmate at caesar.elte.hu
Thu Apr 30 18:13:52 CEST 2015
Sziasztok!
Az a helyzet, hogy minél tovább nézem, annál szerencsétlenebbnek tűnik
ez a kettős debug launch. Ki is fejteném, hogy miért.
Itt ugye a következő objektumok játszanak szerepet az EDF miatt:
- debug model: mit lát a user
- jdt: szokásos process/thread/stack az alap
- moka: amit akarunk azt teszünk oda, a fenti felosztásra vetítve,
mert az EDF azt a hierarchiát adja, a moka pedig egészíti ki; jelenleg
semmit nem teszünk bele
- debug target: hogyan műklödik,
pause/resume/step/terminate/disconnect stb. eventek
- jdt: a belső VM-re alkalmazza és azzal szinkronban teszi a
dolgokat, annak eseményeire reagál
- moka: az execution engine játsza a VM szerepét, az kap a UI-tól
eventeket és fordítva
- source lookup: ha egy stack frame-en, vagy a neki megfelelő EDF
model objektumodon állsz, megmondja mit kell editorban elővenni
- jdt: java class/forrás fájlok
- moka: ha a saját debug modeled építésekor kitöltöd a
MokaStackFrame-en a modelObject mezőt, elvileg magától arra ugrik
Na most mivel két launcher van, minden felsorolt dologból kettő van. Emiatt:
- ezeket szinkronban kéne tartani, ami az önmagukban is bonyolult
event flow-juk miatt nem hiszem, hogy gyerekjáték
- a jdt modeljét el kéne rejteni, és a source lookupot is
- sőt, meg kéne gátolni, hogy a jdt targetjébe a user közvetlenül
eventet küldjön (terminate, disconnect, suspend, resume, stb..)
- és el kéne érni, hogy csak a moka debug target vezérelje a jdt debug
targetet az execution engine-en keresztül
A source lookupot majdnem sikerült egy kommittal megoldanom (r815), de
nem stabil a dolog, a második vagy későbbi indításokra már megint
dobálja fel az ablakokat és nem érdekli valahogy, mit állítottam be.
A többire nem nagyon van ötletem - egyelőre, de nem is biztos, hogy
megoldható. Gyakorlatilag arról van szó, hogy a jdt debuggerét akarjuk
visszabutítani, amit nem biztos, hogy egyáltalán meg lehet oldani
ilyen mértékben. Amit mi a user számára mutatunk az neki nem egy java
program, de a jdt szerint még az. Így most ez a helyzet:
user user
| |
moka <--> exec.engine <--> jdt <--> jvm
Ha kihagyjuk a jdt-t a következő szükséges elemeket bukjuk (át kell
másolni a kódot onnan kb. a legrosszabb esetben):
- processz paraméterezése és startolása
- VM eventek kezelése (ezt úgy is meg kell csinálnunk, csak most
átrángatjuk a jdt-n az egészet...)
Én eredetileg úgy képzeltem, hogy ezt mi csináljuk, akkor csak moka-s
debug target és model van, ahol azt mutatunk amit akarunk, a user
eventjei meg az execution engine-be csapódnak be, ami a vm-nek
közvetít. Tehát ez a helyzet állna fenn:
user <--> moka <--> exec.engine <--> jvm
Azt emelném ki, hogy itt a user 1 ponton ér a gráfhoz: csak azt látja
amit mi mutatunk, és csak rajtunk keresztül tudja befolyásolni a
jvm-et (amiről meg nem is tudja, hogy létezik).
Szóval várom az ötleteket, hogy mit tegyünk ezzel kedden/keddig.
Szerintem nem lenne olyan irgalmatlan nagy meló kivenni a jdt-t, de
Boldi és Robi jobban ismeri nálam az aktuális kódot, nekem csak ilyen
architektúrális elképzeléseim meg korábbi tapasztalataim vannak a
tavalyi kísérletekből.
Üdv,
Máté
More information about the Modelinterpreter
mailing list