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 clazz, Method method, Object[] values, boolean nonVirtual) - Executes a method in the virtual machine
|
static Iterator | getAllLoadedClasses() - Returns an iterator over all the loaded classes in the VM
|
static int | getAllLoadedClassesCount() - Returns a count of the number of loaded classes in the VM
|
static int | getClassStatus(Class clazz) - Returns the status of the given class
|
static VMFrame | getFrame(Thread thread, ByteBuffer bb) - 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 | getFrames(Thread thread, int strart, int length) - Returns the thread's call stack
|
static LineTable | getLineTable(Class clazz, Method method) - "Returns line number information for the method, if present.
|
static ArrayList | getLoadRequests(ClassLoader cl) - Returns a list of all classes which this class loader has been
requested to load
|
static String | getSourceFile(Class 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 VariableTable | getVarTable(Class clazz, Method method) - "Returns variable information for the method.
|
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 | suspendAllThreads() - Suspend all threads
|
static void | suspendThread(Thread thread) - Suspend a thread
|
static void | unregisterEvent(EventRequest request) - Unregisters the given request
|
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait |
clearEvents
public static void clearEvents(byte kind)
Clear all events of the given kind
kind
- the type of events to clear
executeMethod
public static MethodResult executeMethod(Object obj,
Thread thread,
Class clazz,
Method method,
Object[] values,
boolean nonVirtual)
Executes a method in the virtual machine
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 methodnonVirtual
- "otherwise, normal virtual invoke
(instance methods only) "
- a result object containing the results of the invocation
getAllLoadedClassesCount
public static int getAllLoadedClassesCount()
Returns a count of the number of loaded classes in the VM
getClassStatus
public static int getClassStatus(Class clazz)
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,
ByteBuffer bb)
Returns the frame for a given thread with the frame ID in
the buffer
I don't like this.
thread
- the frame's threadbb
- buffer containing the frame's ID
getFrameCount
public static int getFrameCount(Thread thread)
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 getFrames(Thread thread,
int strart,
int length)
Returns the thread's call stack
thread
- thread for which to get call stacklength
- number of frames to return (-1 for all frames)
getLineTable
public static LineTable getLineTable(Class clazz,
Method method)
"Returns line number information for the method, if present. The line
table maps source line numbers to the initial code index of the line.
The line table is ordered by code index (from lowest to highest). The
line number information is constant unless a new class definition is
installed using RedefineClasses."
clazz
- the class in which the method is definedmethod
- the method whose line table is desired
- a result object containing the line table
getLoadRequests
public static ArrayList getLoadRequests(ClassLoader cl)
Returns a list of all classes which this class loader has been
requested to load
- a list of all visible classes
getSourceFile
public static String getSourceFile(Class clazz)
"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)
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)
Returns the status of a thread
thread
- the thread for which to get status
- integer status of the thread
getVarTable
public static VariableTable getVarTable(Class clazz,
Method method)
"Returns variable information for the method. The variable table
includes arguments and locals declared within the method. For instance
methods, the "this" reference is included in the table. Also, synthetic
variables may be present."
clazz
- the class in which the method is definedmethod
- the method for which variable information is desired
- a result object containing the information
registerEvent
public static void registerEvent(EventRequest request)
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()
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)
Resume a thread. A thread must be resumed as many times
as it has been suspended.
thread
- the thread to resume
suspendThread
public static void suspendThread(Thread thread)
Suspend a thread
thread
- the thread to suspend
unregisterEvent
public static void unregisterEvent(EventRequest request)
Unregisters the given request
request
- the request to unregister
VMVirtualMachine.java -- A reference implementation of a JDWP virtual
machine
Copyright (C) 2005 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.