stack of a given Java thread in support of application execution: entry
activation frames, method activation frames and calls to VM frames. The
JES achieves the delayed execution of Java methods by adding a pending
entry activation frame to the notification thread stack.
10.7 Java-level Debugging Support
Providing a Java ME SDK is left for Symbian OS licensees who each have
their own SDK strategy. It is also the responsibility of the licensees to
arrange, for example, the setup and instrumentation of the connection
between the host PC and the device.
The responsibility of Symbian OS is to ensure that a complete
debugging solution exists for Java applications; it includes debugging
applications on the emulator and on target devices by performing debug-
ging operations through a standard Java IDE.
Let's give a brief overview of the core debugging support. In CLDC,
the protocol between the VM and the IDE is a subset of Java Debug Wire
Protocol (JDWP) called KVM Debug Wire Protocol (KDWP). The KDWP
packets go through a proxy on the PC called KDP-Proxy which converts
between JDWP and KDWP (see Figure 10.8). All debug operations, such
as single stepping, reaching breakpoints or watching variables, are carried
on top of this protocol.
J DW P
KD W P
Figure 10.8 Debugging functionality
When CLDC-HI HotSpot runs in debug mode, it has an internal state
machine that replaces the desktop VM JDI. That state-machine module is
responsible for reading KDWP commands, executing them and replying
back to the IDE.
To provide a complete debugging solution, another two entities are
required: an implementation of the Unified Emulator Interface (UEI) must
be integrated with the interactive development environment (IDE) on
the PC; and an on-device Debug Agent manages the deployment and
lifecycle of applications being debugged.
The deployment and lifecycle operate on a different channel and
domain from the raw debugging functionality. The Debug Agent is a native
Symbian C++ application that is shipped with device manufacturer SDKs,
such as the S60 3rd Edition SDK or Sony Ericsson SJP-3 SDK. The Debug
Agent receives requests from the UEI to install, launch and terminate over
a bearer, such as Bluetooth, and uses the client APIs of the Installer and