JavaScript Development Tools Debug

Project Overview

The JSDT debug project brings a variety of JavaScript debugging support to the JSDT using a common UI and communicating using a common protocol - JavaScript Debug Interface (JSDI). The common interface for the debugger emulates that of the platform and JDT debugger to allow a smooth transition and ease of use for the JSDT debugger.

Currently we have debugging support for Rhino and an incubation version of Crossfire / Firebug support.

JSDT Debug Bundles

The JSDT debugger is broken down into the following bundles:

  • org.eclipse.wst.jsdt.debug.core - the JSDI specification and debug model elements.
  • org.eclipse.wst.jsdt.debug.chrome (incubation) - contains a ChromeDevTools implementation of the debugger.
  • org.eclipse.wst.jsdt.debug.crossfire (incubation) - contains a Crossfire implementation of the debugger.
  • org.eclipse.wst.jsdt.debug.rhino - a Rhino implementation of the debugger.
  • org.eclipse.wst.jsdt.debug.rhino.debugger - the Rhino debug hooks to connect to the Rhino interpreter.
  • org.eclipse.wst.jsdt.debug.rhino.ui - the UI presentation for Rhino.
  • org.eclipse.wst.jsdt.debug.transport - the debug protocol transport classes.
  • org.eclipse.wst.jsdt.debug.ui - contains the shared UI presentation for the debugger implementations.
  • org.eclipse.wst.jsdt.debug.core.tests - contains related test cases for the debug core.
  • org.eclipse.wst.jsdt.debug.rhino.tests - contains Rhino specific tests.

A team project set file for JSDT debug can be found here.

Development Resources

All things related to hacking the code and using the tools can be found in this section.

Rhino Debug Wire Protocol

To provide support for the Rhino interpreter, we had to create both sides of the coin - the debugger and the client. To facilitate communication between the debugger and the client we created an adapted version of v8 (JSON-based) packet communication. The complete specification for the RDWP can be found here.

JavaScript Debug Interface (JSDI)

The JSDI is used to provide a common way for our models and UI to communicate with a variety of debugger back-ends - write one UI + model and provide additional debuggers.

Up To The Minute

JSDT Debug is preparing to release version 3.2.1!