gnu.classpath.jdwp
Class VMVirtualMachine
A virtual machine according to JDWP.
static void | clearEvents(byte kind) - Clear all events of the given kind
|
static MethodResult | executeMethod(Object obj, Thread thread, Class<T> clazz, VMMethod method, Value[] values, int options) - Executes a method in the virtual machine.
|
static VMMethod[] | getAllClassMethods(Class<T> klass) - Returns all of the methods defined in the given class.
|
static Collection<E> | getAllLoadedClasses() - Returns a Collection of all classes loaded in the VM
|
static byte[] | getBytecodes(VMMethod method) - Returns the bytecode for the given method.
|
static VMMethod | getClassMethod(Class<T> klass, long id) - A factory method for getting valid virtual machine methods
which may be passed to/from the debugger.
|
static int | getClassStatus(Class<T> clazz) - Returns the status of the given class
|
static Object | getCurrentContendedMonitor(Thread thread) - Returns the current contended monitor for a thread.
|
static VMFrame | getFrame(Thread thread, long frameID) - Returns the frame for a given thread with the frame ID in
the buffer
I don't like this.
|
static int | getFrameCount(Thread thread) - Returns the number of frames in the thread's stack
|
static ArrayList<E> | getFrames(Thread thread, int start, int length) - Returns the thread's call stack
|
static ArrayList<E> | getLoadRequests(ClassLoader cl) - Returns a list of all classes which this class loader has been
requested to load
|
static MonitorInfo | getMonitorInfo(Object obj) - Returns monitor information about an object.
|
static Object[] | getOwnedMonitors(Thread thread) - Returns a list of owned monitors.
|
static String | getSourceDebugExtension(Class<T> klass) - Returns the source debug extension.
|
static String | getSourceFile(Class<T> clazz) - "Returns the name of source file in which a reference type was declared"
|
static int | getSuspendCount(Thread thread) - Get the suspend count for a give thread
|
static int | getThreadStatus(Thread thread) - Returns the status of a thread
|
static void | initialize()
|
static void | popFrames(Thread thread, long frameId) - Pop all frames up to and including the given frame.
|
static void | redefineClasses(Class<T>[] types, byte[][] bytecodes) - Redefines the given types.
|
static void | registerEvent(EventRequest request) - Register a request from the debugger
Virtual machines have two options.
|
static void | resumeAllThreads() - Resume all threads.
|
static void | resumeThread(Thread thread) - Resume a thread.
|
static void | setDefaultStratum(String stratum) - Sets the default stratum.
|
static void | suspendAllThreads() - Suspend all threads
|
static void | suspendThread(Thread thread) - Suspend a thread
|
static void | unregisterEvent(EventRequest request) - Unregisters the given request
|
clone , equals , extends Object> getClass , finalize , hashCode , notify , notifyAll , toString , wait , wait , wait |
clearEvents
public static void clearEvents(byte kind)
throws JdwpException
Clear all events of the given kind
kind
- the type of events to clear
executeMethod
public static MethodResult executeMethod(Object obj,
Thread thread,
Class<T> clazz,
VMMethod method,
Value[] values,
int options)
throws JdwpException
Executes a method in the virtual machine. The thread must already
be suspended by a previous event. When the method invocation is
complete, the thread (or all threads if INVOKE_SINGLE_THREADED is
not set in options) must be suspended before this method returns.
obj
- instance in which to invoke method (null for static)thread
- the thread in which to invoke the methodclazz
- the class in which the method is definedmethod
- the method to invokevalues
- arguments to pass to methodoptions
- invocation options
- a result object containing the results of the invocation
getAllClassMethods
public static VMMethod[] getAllClassMethods(Class<T> klass)
throws JdwpException
Returns all of the methods defined in the given class. This
includes all methods, constructors, and class initializers.
klass
- the class whose methods are desired
- an array of virtual machine methods
getBytecodes
public static byte[] getBytecodes(VMMethod method)
throws JdwpException
Returns the bytecode for the given method. VM must support the
canGetBytecodes capability.
method
- the method for which to get bytecodes
getClassMethod
public static VMMethod getClassMethod(Class<T> klass,
long id)
throws JdwpException
A factory method for getting valid virtual machine methods
which may be passed to/from the debugger.
klass
- the class in which the method is definedid
- the ID of the desired method
- the desired internal representation of the method
getClassStatus
public static int getClassStatus(Class<T> clazz)
throws JdwpException
Returns the status of the given class
clazz
- the class whose status is desired
- a flag containing the class's status
getFrame
public static VMFrame getFrame(Thread thread,
long frameID)
throws JdwpException
Returns the frame for a given thread with the frame ID in
the buffer
I don't like this.
thread
- the frame's thread
getFrameCount
public static int getFrameCount(Thread thread)
throws JdwpException
Returns the number of frames in the thread's stack
thread
- the thread for which to get a frame count
- the number of frames in the thread's stack
getFrames
public static ArrayList<E> getFrames(Thread thread,
int start,
int length)
throws JdwpException
Returns the thread's call stack
thread
- thread for which to get call stackstart
- index of first frame to returnlength
- number of frames to return (-1 for all frames)
getSourceFile
public static String getSourceFile(Class<T> clazz)
throws JdwpException
"Returns the name of source file in which a reference type was declared"
clazz
- the class for which to return a source file
- a string containing the source file name; "no path information
for the file is included"
getSuspendCount
public static int getSuspendCount(Thread thread)
throws JdwpException
Get the suspend count for a give thread
thread
- the thread whose suspend count is desired
- the number of times the thread has been suspended
getThreadStatus
public static int getThreadStatus(Thread thread)
throws JdwpException
Returns the status of a thread
thread
- the thread for which to get status
- integer status of the thread
popFrames
public static void popFrames(Thread thread,
long frameId)
Pop all frames up to and including the given frame. VM must
support canPopFrames capability. It is the responsibility
of the VM to check if the thread is suspended. If it is not,
the VM should throw ThreadNotSuspendedException.
redefineClasses
public static void redefineClasses(Class<T>[] types,
byte[][] bytecodes)
throws JdwpException
Redefines the given types. VM must support canRedefineClasses
capability (may also require canAddMethod and/or
canUnrestrictedlyRedefineClasses capabilities)
types
- the classes to redefinebytecodes
- the new bytecode definitions for the classes
registerEvent
public static void registerEvent(EventRequest request)
throws JdwpException
Register a request from the debugger
Virtual machines have two options. Either do nothing and allow
the event manager to take care of the request (useful for broadcast-type
events like class prepare/load/unload, thread start/end, etc.)
or do some internal work to set up the event notification (useful for
execution-related events like breakpoints, single-stepping, etc.).
resumeAllThreads
public static void resumeAllThreads()
throws JdwpException
Resume all threads. This simply decrements the thread's
suspend count. It can not be used to force the application
to run.
resumeThread
public static void resumeThread(Thread thread)
throws JdwpException
Resume a thread. A thread must be resumed as many times
as it has been suspended.
thread
- the thread to resume
setDefaultStratum
public static void setDefaultStratum(String stratum)
throws JdwpException
Sets the default stratum. VM must support the
canSetDefaultStratum capability.
stratum
- the new default stratum or empty string to
use the reference default
VMVirtualMachine.java -- A reference implementation of a JDWP virtual
machine
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.