[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
| [wtp-dev] Nashorn Debugging | 
Continuing a conversation [1] started in the JBoss Tools Forum, I would 
like to discuss what it would take to support mixed JavaScript/Java 
debugging on Nashorn with JSDT.
This is a feature that works very smoothly in NetBeans, but is not 
currently supported by official Eclipse projects or any third-party 
plugins, as it seems.
Scenario:
We are debugging a plain old Java application which embeds Nashorn via 
javax.script.ScriptEngine and loads some JavaScript files. Some of the 
JavaScript functions call Java methods via Nashorn extensions.
Using the Eclipse debugger, we can set breakpoints both in JavaScript 
and Java sources and step through our application, from Java into 
JavaScript and back into Java, with the appropriate source lines being 
highlighted in the editor.
In the call stack, we can see Java and JavaScript stack frames embodied 
by method calls of generated Java classes. When selecting a stack frame 
corresponding to a JavaScript call, the variable inspector automatically 
switches from Java to JavaScript mode, so we can inspect JavaScript objects.
So far, I've experimented with JDI and 
jdk.nashorn.internal.runtime.DebuggerSupport and I sort of understand 
how to track scripts being loaded and how to map breakpoints to 
JavaScript source lines and vice versa.
I've taken a look at JSDT and JDT sources, and I'm not quite sure how 
this mixed source scenario would fit into the existing approaches.
Implementing a new JSDI adapter for Nashorn along the lines of the Rhino 
debugger would only cover the JavaScript part.
Would it be possible to start with a JDT debug launcher and extend it or 
create some kind of mixin to switch between the Nashorn/Java and 
JavaScript aspects of the same application?
Are there any solutions for other JVM languages supporting 
mixed-language applications that might serve as an example?
[1] https://developer.jboss.org/message/920239
Best regards,
Harald