<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<title>Java(tm) Debug Interface</title>
</head>
<body>
The Java<sup><font size="-2">TM</font></sup>
Debug Interface (JDI) is a high level Java
API providing information useful for debuggers and similiar
systems needing access to the running state of a (usually remote)
virtual machine.
<p>
The JDI provides introspective
access to a running virtual machine's state, Class, Array,
Interface, and primitive types, and instances of those
types.
<P>
The JDI also provides explicit control over
a virtual machine's execution. The ability to suspend
and resume threads, and to set breakpoints, watchpoints, ...
Notification
of exceptions, class loading, thread creation...
The ability to inspect a suspended thread's state,
local variables, stack backtrace...
<p>
JDI is the highest-layer of the Java Platform Debugger Architecture (JPDA).
For more information on the Java Platform Debugger Architecture, see the
<a href="{@docRoot}/../../../../technotes/guides/jpda/index.html">
Java Platform Debugger Architecture documentation</a>
for this release and the
<a href="http://java.sun.com/products/jpda">Java Platform Debugger Architecture website</a>.
<p>
<font size="+1"><b>Global Exceptions:</b></font>
<p>
This section documents exceptions which apply to the entire API and are thus
not documented on individual methods.
<blockquote>
<p>
<b>{@link com.sun.jdi.VMMismatchException}</b>
<p>
Any method on a {@link com.sun.jdi.Mirror} that takes a <code>Mirror</code> as an
parameter directly or indirectly (e.g., as a element in a <code>List</code>) will
throw {@link com.sun.jdi.VMMismatchException} if the mirrors are from different
virtual machines.
<p>
<b>{@link java.lang.NullPointerException}</b>
<p>
Any method which takes a {@link java.lang.Object} as an parameter will throw
{@link java.lang.NullPointerException} if null is passed directly or indirectly
-- unless null is explicitly mentioned as a valid parameter.
<p>
</blockquote>
NOTE: The exceptions below may be thrown whenever the specified
conditions are met but a guarantee that they are thrown only
exists when a valid result cannot be returned.
<blockquote>
<p>
<b>{@link com.sun.jdi.VMDisconnectedException}</b>
<p>
Any method on {@link com.sun.jdi.ObjectReference}, {@link com.sun.jdi.ReferenceType},
{@link com.sun.jdi.request.EventRequest}, {@link com.sun.jdi.StackFrame}, or
{@link com.sun.jdi.VirtualMachine} or which takes one of these directly or indirectly
as an parameter may throw {@link com.sun.jdi.VMDisconnectedException} if the target VM
is disconnected and the {@link com.sun.jdi.event.VMDisconnectEvent} has been or is available
to be read from the {@link com.sun.jdi.event.EventQueue}.
<p>
<b>{@link com.sun.jdi.VMOutOfMemoryException}</b>
<p>
Any method on {@link com.sun.jdi.ObjectReference}, {@link com.sun.jdi.ReferenceType},
{@link com.sun.jdi.request.EventRequest}, {@link com.sun.jdi.StackFrame}, or
{@link com.sun.jdi.VirtualMachine} or which takes one of these directly or indirectly
as an parameter may throw {@link com.sun.jdi.VMOutOfMemoryException} if the target
VM has run out of memory.
<p>
<b>{@link com.sun.jdi.ObjectCollectedException}</b>
<p>
Any method on {@link com.sun.jdi.ObjectReference} or which directly or indirectly takes
<code>ObjectReference</code> as parameter may throw {@link com.sun.jdi.ObjectCollectedException}
if the mirrored object has been garbage collected.
<p>
Any method on {@link com.sun.jdi.ReferenceType} or which directly or indirectly takes
<code>ReferenceType</code> as parameter may throw {@link com.sun.jdi.ObjectCollectedException}
if the mirrored type has been unloaded.
</blockquote>
</body>
</html>