gnu.classpath.jdwp

Class Jdwp

Implemented Interfaces:
Runnable

public class Jdwp
extends Thread

Main interface from the virtual machine to the JDWP back-end. The thread created by this class is only used for initialization. Once it exits, the JDWP backend is fully initialized.

Nested Class Summary

Nested classes/interfaces inherited from class java.lang.Thread

Thread.State, Thread.UncaughtExceptionHandler

Field Summary

static boolean
isDebugging
Are we debugging?

Fields inherited from class java.lang.Thread

MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY

Constructor Summary

Jdwp()
constructor

Method Summary

void
configure(String configArgs)
Configures the back-end
static Jdwp
getDefault()
Returns the JDWP back-end, creating an instance of it if one does not already exist.
ThreadGroup
getJdwpThreadGroup()
Get the thread group used by JDWP threads
static void
notify(Event event)
Notify the debugger of an event.
static void
notify(Event[] events)
Notify the debugger of "co-located" events.
void
run()
This method will be called by whoever wishes to run your class implementing Runnable.
static void
sendEvent(EventRequest request, Event event)
Sends the event to the debugger.
static void
sendEvents(EventRequest[] requests, Event[] events, byte suspendPolicy)
Sends the events to the debugger.
void
shutdown()
Shutdown the JDWP back-end NOTE: This does not quite work properly.
void
subcomponentInitialized()
Allows subcomponents to specify that they are initialized.
static boolean
suspendOnStartup()
Should the virtual machine suspend on startup?

Methods inherited from class java.lang.Thread

StackTraceElement[]> getAllStackTraces, activeCount, checkAccess, countStackFrames, currentThread, destroy, dumpStack, enumerate, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, resume, run, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, stop, suspend, toString, yield

Methods inherited from class java.lang.Object

clone, equals, extends Object> getClass, finalize, hashCode, notify, notifyAll, toString, wait, wait, wait

Field Details

isDebugging

public static boolean isDebugging
Are we debugging? Only true if debugging *and* initialized.

Constructor Details

Jdwp

public Jdwp()
constructor

Method Details

configure

public void configure(String configArgs)
Configures the back-end
Parameters:
configArgs - a string of configury options

getDefault

public static Jdwp getDefault()
Returns the JDWP back-end, creating an instance of it if one does not already exist.

getJdwpThreadGroup

public ThreadGroup getJdwpThreadGroup()
Get the thread group used by JDWP threads
Returns:
the thread group

notify

public static void notify(Event event)
Notify the debugger of an event. This method should not be called if debugging is not active (but it would not cause any harm). Places where event notifications occur should check isDebugging before doing anything. The event is filtered through the event manager before being sent.
Parameters:
event - the event to report

notify

public static void notify(Event[] events)
Notify the debugger of "co-located" events. This method should not be called if debugging is not active (but it would not cause any harm). Places where event notifications occur should check isDebugging before doing anything. The events are filtered through the event manager before being sent.
Parameters:
events - the events to report

run

public void run()
This method will be called by whoever wishes to run your class implementing Runnable. Note that there are no restrictions on what you are allowed to do in the run method, except that you cannot throw a checked exception.
Specified by:
run in interface Runnable
Overrides:
run in interface Thread

sendEvent

public static void sendEvent(EventRequest request,
                             Event event)
            throws IOException
Sends the event to the debugger. This method bypasses the event manager's filtering.
Parameters:
request - the debugger request for the event
event - the event to send
Throws:
IOException - if a communications failure occurs

sendEvents

public static void sendEvents(EventRequest[] requests,
                              Event[] events,
                              byte suspendPolicy)
            throws IOException
Sends the events to the debugger. This method bypasses the event manager's filtering.
Parameters:
requests - list of debugger requests for the events
events - the events to send
suspendPolicy - the suspendPolicy enforced by the VM
Throws:
IOException - if a communications failure occurs

shutdown

public void shutdown()
Shutdown the JDWP back-end NOTE: This does not quite work properly. See notes in run() on this subject (catch of InterruptedException).

subcomponentInitialized

public void subcomponentInitialized()
Allows subcomponents to specify that they are initialized. Subcomponents include JdwpConnection and PacketProcessor.

suspendOnStartup

public static boolean suspendOnStartup()
Should the virtual machine suspend on startup?

Jdwp.java -- Virtual machine to JDWP back-end programming interface Copyright (C) 2005, 2006, 2007 Free Software Foundation This file is part of GNU Classpath. GNU Classpath is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. GNU Classpath is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GNU Classpath; see the file COPYING. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License cover the whole combination. As a special exception, the copyright holders of this library give you permission to link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module. An independent module is a module which is not derived from or based on this library. If you modify this library, you may extend this exception to your version of the library, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version.