Debugger API for Rhino

This release of the Debugger API should be considered to be of Beta quality.

The Debugger API for Rhino consists of a set of Java interfaces which describes a high level debugger API and a default implementation of that API.

Most of the API is in the com.netscape.javascript.debug package. It is built upon low-level support built into the core engine in com.netscape.javascript.

The com.netscape.javascript.debug package includes an implementation of the Debugger API interfaces outlined below. The class com.netscape.javascript.debug.DebugManager.java implements the IDebugManager interface and com.netscape.javascript.debug.SourceTextManagerImpl.java implements the SourceTextManager interface.

The class com.netscape.javascript.tools.shell.Main.java provides an example which invokes the Debugger API.


The core interface of the API is IDebugManager. This interface provide the central point for interacting with the debug system. It supports the setting of the following hooks:

Customers of the Debugger API can provide implementations of these hook interfaces which can be passed to the IDebugManager in order receive notification of the various events within the core JavaScript engine.

When hooks are called they are passed appropriate objects which are implemented by the Debugger API to describe such things as stack frames, program counter locations, etc. The interfaces for these objects are:


SourceTextManager is an interface used to supply a centralized location from which a debugger client can access JavaScript source. It supports capturing source as it is parsed by Rhino. Alternately, source can be fed to it by the embedding; e.g. in a browser embedding where the JavaScript code is just a part of the html source the browser can feed the entire source to the SourceTextManager so that a debugger can 'see' the whole source and not just the part that is fed to the JavaScript compiler.

SourceTextItem is an interface representing a single 'block' of source code text (typically this is an entire source file). This may be pure JavaScript source, or may include JavaScript source embedded in html or whatever. The point is that this is the text that a debugger should show to a user while debugging the JavaScript code. This interface supports incrementally updated content. This is specifically useful in browser embeddings where text is received in blocks. In fact, in a browser it is possible that some of the source on a page may be compiled and run even before the entire content of the page has been received from a server.


ILaunchableDebugger is an interface that abstractly represents a debugger user interface. It is defined to allow an embedding to request that a debugger be launched without requiring that the embedding be coupled at compile time to a particular debugger implementation.


Limitations and unimplemented features



back to top