Skip to main content

[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


Back to the top