![]() |
JavaTM Platform Debugger Architecture - Description |
Components Debugger Interfaces / |--------------| / | VM | debuggee ----( |--------------| <------- JVMDI - Java VM Debug Interface \ | back-end | \ |--------------| / | comm channel -( | <--------------- JDWP - Java Debug Wire Protocol \ | |--------------| | front-end | |--------------| <------- JDI - Java Debug Interface | UI | |--------------|
The debugger architecture is being designed for use in wide spectrum of VM implementations.
The VM implements the Java Virtual Machine Debug Interface (JVMDI).
It is clear from experience that debugger support code, running on the debuggee and written in Java, contends with the debuggee in ways that cause hangs and other undesired behavior. Thus, the back-end is native code. This, in turn, implies that the JVMDI be a pure native interface.
The example UIs are clients of the Java Debug Interface (JDI).
Defines the services a VM must provide for debugging. Includes requests for information (for example, current stack frame), actions (for example, set a breakpoint), and notification (for example, when a breakpoint has been hit). A debugger may make use of VM information other than this (for example, Java Native Interface (JNI)), but this is the source of all debugger specific information.
Specifying the VM Interface allows any VM implementor to plug easily into the debugging architecture. It also allows alternate communication channel implementations. VM implementations which do not adhere to this interface can still provide access via the Java Debug Wire Protocol (JDWP).
See also:
The specification of the protocol allows the debuggee and debugger front-end to run under separate VM implementations and/or on separate platforms. It also allows the front-end to be written in a language other than Java, or the debuggee to be non-native (e.g. Java).
Information and requests are roughly at the level of the Java Virtual Machine Debug Interface (JVMDI), but will include additional information and requests necessitated by bandwidth issues, examples include information filtering and batching.
See also:
Defines information and requests at a user code level.
While debugger implementors could directly use the Java Debug Wire Protocol (JDWP) or Java Virtual Machine Debug Interface (JVMDI), this interface greatly facilitates the integration of debugging capabilities into development environments. We recommend the JDI layer for all debugger development.
See also:
Copyright © 1997-1999 Sun
Microsystems, Inc. All Rights Reserved.
Please send comments to: java-debugger@java.sun.com |
![]() |