|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectedu.rice.cs.drjava.model.debug.jpda.JPDADebugger
public class JPDADebugger
An integrated debugger which attaches to the Interactions JVM using Sun's Java Platform Debugger Architecture (JPDA/JDI) interface. Every public method in this class throws an llegalStateException if it is called while the debugger is not active, except for isAvailable, isReady, and startUp. Public methods also throw a DebugException if the EventHandlerThread has caught an exception.
| Nested Class Summary | |
|---|---|
protected static class |
JPDADebugger.DelegatingLocation
A Location that delegates to another location in all cases except for line number, source path and source name. |
private static class |
JPDADebugger.RandomAccessStack
A thread-safe stack from which you can remove any element, not just the top of the stack. |
| Nested classes/interfaces inherited from interface edu.rice.cs.drjava.model.debug.Debugger |
|---|
Debugger.StepType |
| Field Summary | |
|---|---|
private Throwable |
_eventHandlerError
If not null, this field holds an error caught by the EventHandlerThread. |
private com.sun.jdi.request.EventRequestManager |
_eventManager
Manages all event requests in JDI. |
private com.sun.jdi.ObjectReference |
_interpreterJVM
A handle to the interpreterJVM that we need so we can populate the environment. |
private boolean |
_isAutomaticTraceEnabled
|
private static Log |
_log
A log for recording messages in a file. |
private GlobalModel |
_model
Reference to DrJava's model. |
(package private) DebugEventNotifier |
_notifier
Provides a way for the JPDADebugger to communicate with the view. |
private PendingRequestManager |
_pendingRequestManager
Keeps track of any DebugActions whose classes have not yet been loaded, so that EventRequests can be created when the correct ClassPrepareEvent occurs. |
private com.sun.jdi.ThreadReference |
_runningThread
The running ThreadReference that we are debugging. |
private JPDADebugger.RandomAccessStack |
_suspendedThreads
Storage for all the threads suspended by this debugger. |
private com.sun.jdi.VirtualMachine |
_vm
VirtualMachine of the interactions JVM. |
private ArrayList<DebugWatchData> |
_watches
Vector of all current Watches. |
private InteractionsListener |
_watchListener
|
private static String |
ADD_INTERPRETER_SIG
Signature of the InterpreterJVM.addInterpreter method. |
private static String |
GET_VARIABLE_VALUE_SIG
Signature of the InterpreterJVM.getVariableValue method. |
private static String |
NEW_INSTANCE_SIG
|
private static int |
OBJECT_COLLECTED_TRIES
|
| Constructor Summary | |
|---|---|
JPDADebugger(GlobalModel model)
Builds a new JPDADebugger to debug code in the Interactions JVM, using the JPDA/JDI interfaces. |
|
| Method Summary | |
|---|---|
private void |
_attachToVM()
Handles the details of attaching to the interpreterJVM. |
private com.sun.jdi.ObjectReference |
_box(com.sun.jdi.PrimitiveValue val,
com.sun.jdi.ThreadReference thread,
List<com.sun.jdi.ObjectReference> toRelease)
Create a boxed object corresponding to the given primitive. |
private void |
_copyVariablesFromInterpreter()
Assumes lock is already held. |
private void |
_currThreadResumed()
Notifies all listeners that the current thread has been resumed. |
private void |
_dumpVariablesIntoInterpreterAndSwitch()
Copy the current selected thread's visible variables (those in scope) into an interpreter's environment and then switch the Interactions window's interpreter to that interpreter. |
private void |
_ensureReady()
Ensures that debugger is active. |
private com.sun.jdi.connect.AttachingConnector |
_getAttachingConnector()
Returns an attaching connector to use for connecting to the interpreter JVM. |
private com.sun.jdi.ReferenceType |
_getClass(String name)
Get a reference type corresponding to the class with the given name. |
private String |
_getPromptString(com.sun.jdi.ThreadReference threadRef)
|
private static com.sun.jdi.Value |
_getStaticField(com.sun.jdi.ReferenceType location,
String name)
Get the value of the given static field, and handle any errors that may arise. |
private com.sun.jdi.ThreadReference |
_getThreadFromDebugThreadData(DebugThreadData d)
Assumes lock is already held. |
private String |
_getUniqueThreadName(com.sun.jdi.ThreadReference thread)
Returns a unique name for the given thread. |
private void |
_hideWatches()
Hides all of the values of the watches and their types. |
private static com.sun.jdi.Value |
_invokeConstructor(com.sun.jdi.ThreadReference thread,
com.sun.jdi.ClassType location,
String signature,
com.sun.jdi.Value... args)
Invoke a constructor of the given class, and handle any errors that may arise. |
private static com.sun.jdi.Value |
_invokeMethod(com.sun.jdi.ThreadReference thread,
com.sun.jdi.ObjectReference receiver,
String name,
String signature,
com.sun.jdi.Value... args)
Invoke the given method, and handle any errors that may arise. |
private static com.sun.jdi.Value |
_invokeStaticMethod(com.sun.jdi.ThreadReference thread,
com.sun.jdi.ClassType location,
String name,
String signature,
com.sun.jdi.Value... args)
Invoke the given static method, and handle any errors that may arise. |
private void |
_log(String message)
Logs any unexpected behavior that occurs (but which should not cause DrJava to abort). |
private void |
_log(String message,
Throwable t)
Logs any unexpected behavior that occurs (but which should not cause DrJava to abort). |
private com.sun.jdi.ArrayReference |
_mirrorArray(String elementClass,
List<? extends com.sun.jdi.ObjectReference> elts,
com.sun.jdi.ThreadReference thread,
List<com.sun.jdi.ObjectReference> toRelease)
Create an array of the given elements in the VM and prevent it from being garbage collected. |
private com.sun.jdi.StringReference |
_mirrorString(String s,
List<com.sun.jdi.ObjectReference> toRelease)
Create a String in the VM and prevent it from being garbage collected. |
private void |
_removeAllDebugInterpreters()
Removes all of the debug interpreters as part of shutting down. |
private void |
_removeCurrentDebugInterpreter(boolean fromStep)
Removes the current debug interpreter upon resuming the current thread. |
private void |
_resumeFromStep()
Resumes the thread currently being debugged without removing the debug interpreter or switching to the next suspended thread. |
private void |
_resumeHelper(boolean fromStep)
Resumes execution of the currently suspended thread. |
private void |
_resumeThread(com.sun.jdi.ThreadReference thread,
boolean fromStep)
Resumes the given thread, only copying variables from its debug interpreter if shouldCopyBack is true. |
private void |
_stepHelper(Debugger.StepType type,
boolean shouldNotify)
Performs a step in the currently suspended thread, only generating a step event if shouldNotify if true. |
private void |
_switchToInterpreterForThreadReference(com.sun.jdi.ThreadReference threadRef)
Switches the current interpreter to the one corresponding to threadRef. |
private void |
_switchToSuspendedThread()
Calls the real switchToSuspendedThread, telling it to updateWatches. |
private void |
_switchToSuspendedThread(com.sun.jdi.request.BreakpointRequest request)
Calls the real switchToSuspendedThread, telling it to updateWatches. |
private void |
_switchToSuspendedThread(com.sun.jdi.request.BreakpointRequest request,
boolean updateWatches)
Performs the bookkeeping to switch to the suspened thread on the top of the _suspendedThreads stack. |
private com.sun.jdi.PrimitiveValue |
_unbox(com.sun.jdi.ObjectReference val,
com.sun.jdi.ThreadReference thread)
Create an unboxed primitive corresponding to the given object. |
private void |
_updateWatches()
Updates the stored value of each watched field and variable. |
void |
addListener(DebugListener listener)
Adds a listener to this JPDADebugger. |
void |
addWatch(String field)
Adds a watch on the given field or variable. |
DebugModelCallback |
callback()
|
(package private) void |
currThreadDied()
Notifies all listeners that the current thread has died. |
(package private) void |
currThreadSuspended()
Notifies all listeners that the current thread has been suspended. |
(package private) void |
currThreadSuspended(com.sun.jdi.request.BreakpointRequest request)
Notifies all listeners that the current thread has been suspended. |
(package private) void |
eventHandlerError(Throwable t)
Records that an error occurred in the EventHandlerThread. |
Breakpoint |
getBreakpoint(int line,
String className)
Gets the Breakpoint object at the specified line in the given class. |
(package private) com.sun.jdi.ThreadReference |
getCurrentRunningThread()
Returns the running thread currently tracked by the debugger. |
ArrayList<DebugStackData> |
getCurrentStackFrameData()
Returns a Vector of DebugStackData for the current suspended thread. |
(package private) com.sun.jdi.ThreadReference |
getCurrentThread()
Returns the currently selected thread for the debugger. |
ArrayList<DebugThreadData> |
getCurrentThreadData()
Returns a list of all threads being tracked by the debugger. |
(package private) com.sun.jdi.request.EventRequestManager |
getEventRequestManager()
Returns the current EventRequestManager from JDI, or null if startUp() has not been called. |
com.sun.jdi.Location |
getLLLocation(com.sun.jdi.Location l,
List<File> files)
Return a JDI location that matches the given location, but Java line numbers have been mapped to LL line numbers. |
StackTraceElement |
getLLStackTraceElement(com.sun.jdi.Location l,
List<File> files)
Return a stack trace element that matches the given location, but Java line numbers have been mapped to LL line numbers. |
LanguageLevelStackTraceMapper |
getLLSTM()
Gets the LanguageLevelStackTraceMapper |
(package private) PendingRequestManager |
getPendingRequestManager()
Returns the pending request manager used by the debugger. |
(package private) Vector<com.sun.jdi.ReferenceType> |
getReferenceTypes(String className,
int lineNumber)
Returns a Vector with the loaded ReferenceTypes for the given class name (empty if the class could not be found). |
(package private) com.sun.jdi.ThreadReference |
getThreadAt(int i)
Returns the suspended thread at the current index of the stack. |
(package private) com.sun.jdi.VirtualMachine |
getVM()
Accessor for the _vm field. |
ArrayList<DebugWatchData> |
getWatches()
Returns all currently watched fields and variables. |
boolean |
hasRunningThread()
Returns whether the thread the debugger is tracking is now running. |
boolean |
hasSuspendedThreads()
Returns whether the debugger currently has any suspended threads. |
boolean |
isAutomaticTraceEnabled()
Returns whether automatic trace has been enabled within the debugger |
boolean |
isAvailable()
Returns whether the debugger is available in this copy of DrJava. |
boolean |
isCurrentThreadSuspended()
Returns whether the debugger's current thread is suspended. |
static boolean |
isJavaIdentifier(String s)
|
boolean |
isReady()
Returns whether the debugger is currently enabled. |
static boolean |
isSimpleVariableOrFieldAccess(String var)
Checks whether the argument is a valid variable or field access. |
int |
LLBreakpointLineNum(Breakpoint breakpoint)
Returns the line number of the breakpoint, possibly mapped from LL to Java if the breakpoint is set in a language level file. |
(package private) void |
nonCurrThreadDied()
|
void |
notifyBreakpointChange(Breakpoint breakpoint)
Enable or disable the specified breakpoint. |
(package private) void |
notifyDebuggerShutdown()
Notifies all listeners that the debugger has shut down. |
(package private) void |
notifyDebuggerStarted()
Notifies all listeners that the debugger has started. |
(package private) void |
notifyStepRequested()
Notifies all listeners that a step has been requested. |
private void |
openAndScroll(OpenDefinitionsDocument doc,
int line,
String className,
boolean shouldHighlight)
Opens a document and scrolls to the appropriate location. |
private void |
openAndScroll(OpenDefinitionsDocument doc,
com.sun.jdi.Location location,
boolean shouldHighlight)
Opens a document and scrolls to the appropriate location. |
Pair<com.sun.jdi.Location,OpenDefinitionsDocument> |
preloadDocument(com.sun.jdi.Location location)
Return the adjusted location (identical to input unless the matching document is a LL file) and document associated with this location generated by the JVM and hence associated with a conventional Java (not an LL) file. |
(package private) void |
printMessage(String message)
Prints a message in the Interactions Pane. |
(package private) void |
reachedBreakpoint(com.sun.jdi.request.BreakpointRequest request)
Called when a breakpoint is reached. |
void |
removeAllWatches()
Removes all watches on existing fields and variables. |
void |
removeBreakpoint(Breakpoint bp)
Removes a breakpoint. |
void |
removeListener(DebugListener listener)
Removes a listener to this JPDADebugger. |
void |
removeWatch(int index)
Removes the watch at the given index. |
void |
removeWatch(String field)
Removes any watches on the given field or variable. |
void |
resume()
Resumes the thread currently being debugged, copying back all variables from the current debug interpreter. |
void |
resume(DebugThreadData threadData)
Resumes the given thread, copying back any variables from its associated debug interpreter. |
void |
scrollToSource(Breakpoint bp)
Scrolls to the source of the given breakpoint. |
void |
scrollToSource(Breakpoint bp,
boolean shouldHighlight)
Scrolls to the source of the given breakpoint. |
void |
scrollToSource(DebugStackData stackData)
Scrolls to the source location specified by the the debug stack data. |
private void |
scrollToSource(com.sun.jdi.Location location)
Scroll to the location specified by location Assumes lock on this is already held |
private void |
scrollToSource(com.sun.jdi.Location location,
boolean shouldHighlight)
Scroll to the location specified by location. |
void |
setAutomaticTraceEnabled(boolean e)
Enables or disables automatic trace. |
void |
setBreakpoint(Breakpoint breakpoint)
Sets a breakpoint. |
void |
setCurrentThread(DebugThreadData threadData)
Sets the notion of current thread to the one contained in threadData. |
(package private) boolean |
setCurrentThread(com.sun.jdi.ThreadReference thread)
Sets the debugger's currently active thread. |
void |
shutdown()
Disconnects the debugger from the Interactions JVM and cleans up any state. |
void |
startUp()
Attaches the debugger to the Interactions JVM to prepare for debugging. |
void |
step(Debugger.StepType type)
Steps the execution of the currently loaded document. |
(package private) void |
threadStarted()
|
boolean |
toggleBreakpoint(OpenDefinitionsDocument doc,
int offset,
boolean isEnabled)
Toggles whether a breakpoint is set at the given line in the given document. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
private static final Log _log
private static final int OBJECT_COLLECTED_TRIES
private static final String ADD_INTERPRETER_SIG
InterpreterJVM.addInterpreter(java.lang.String),
_dumpVariablesIntoInterpreterAndSwitch(),
Constant Field Valuesprivate static final String GET_VARIABLE_VALUE_SIG
InterpreterJVM.getVariableValue(java.lang.String),
_copyVariablesFromInterpreter(),
Constant Field Valuesprivate static final String NEW_INSTANCE_SIG
private volatile GlobalModel _model
private volatile com.sun.jdi.VirtualMachine _vm
private volatile com.sun.jdi.request.EventRequestManager _eventManager
private final ArrayList<DebugWatchData> _watches
private final PendingRequestManager _pendingRequestManager
final DebugEventNotifier _notifier
private volatile com.sun.jdi.ThreadReference _runningThread
private volatile JPDADebugger.RandomAccessStack _suspendedThreads
private volatile com.sun.jdi.ObjectReference _interpreterJVM
private volatile InteractionsListener _watchListener
private volatile Throwable _eventHandlerError
private volatile boolean _isAutomaticTraceEnabled
| Constructor Detail |
|---|
public JPDADebugger(GlobalModel model)
| Method Detail |
|---|
private void _log(String message)
message - message to print to the log
private void _log(String message,
Throwable t)
message - message to print to the logt - Exception or Error being loggedpublic void addListener(DebugListener listener)
addListener in interface Debuggerlistener - a listener that reacts on events generated by the JPDADebuggerpublic void removeListener(DebugListener listener)
removeListener in interface Debuggerlistener - listener to removepublic boolean isAvailable()
isAvailable in interface Debuggerpublic DebugModelCallback callback()
callback in interface Debuggerpublic boolean isReady()
isReady in interface Debugger
public void startUp()
throws DebugException
startUp in interface DebuggerDebugExceptionpublic void shutdown()
shutdown in interface DebuggerIllegalStateException - if debugger is not ready
public void setCurrentThread(DebugThreadData threadData)
throws DebugException
setCurrentThread in interface DebuggerthreadData - The Thread to set as current.
IllegalStateException - if debugger is not ready
IllegalArgumentException - if threadData is null or not suspended
DebugExceptioncom.sun.jdi.ThreadReference getCurrentThread()
public boolean hasSuspendedThreads()
throws DebugException
hasSuspendedThreads in interface DebuggerDebugException
public boolean isCurrentThreadSuspended()
throws DebugException
isCurrentThreadSuspended in interface DebuggerDebugException
public boolean hasRunningThread()
throws DebugException
hasRunningThread in interface DebuggerDebugException
public void resume()
throws DebugException
resume in interface DebuggerDebugExceptionpublic void setAutomaticTraceEnabled(boolean e)
setAutomaticTraceEnabled in interface Debuggerpublic boolean isAutomaticTraceEnabled()
Debugger
isAutomaticTraceEnabled in interface Debugger
public void resume(DebugThreadData threadData)
throws DebugException
resume in interface DebuggerthreadData - Thread to resume
DebugException
public void step(Debugger.StepType type)
throws DebugException
step in interface DebuggerDebugExceptionpublic static boolean isSimpleVariableOrFieldAccess(String var)
var - the name of the field
public static boolean isJavaIdentifier(String s)
public void addWatch(String field)
throws DebugException
addWatch in interface Debuggerfield - the name of the field we will watch
DebugException
public void removeWatch(String field)
throws DebugException
removeWatch in interface Debuggerfield - the name of the field we will watch
DebugException
public void removeWatch(int index)
throws DebugException
removeWatch in interface Debuggerindex - Index of the watch to remove
DebugException
public void removeAllWatches()
throws DebugException
removeAllWatches in interface DebuggerDebugExceptionpublic void notifyBreakpointChange(Breakpoint breakpoint)
breakpoint - breakpoint to change
public boolean toggleBreakpoint(OpenDefinitionsDocument doc,
int offset,
boolean isEnabled)
throws DebugException
toggleBreakpoint in interface Debuggerdoc - Document in which to set or remove the breakpointoffset - Start offset on the line to set the breakpointisEnabled - true if this breakpoint should be enabled
DebugException
public void setBreakpoint(Breakpoint breakpoint)
throws DebugException
setBreakpoint in interface Debuggerbreakpoint - The new breakpoint to set
DebugExceptionpublic int LLBreakpointLineNum(Breakpoint breakpoint)
public StackTraceElement getLLStackTraceElement(com.sun.jdi.Location l,
List<File> files)
l - location with Java line numbersfiles - open LL files
public com.sun.jdi.Location getLLLocation(com.sun.jdi.Location l,
List<File> files)
l - location with Java line numbersfiles - open LL files
public void removeBreakpoint(Breakpoint bp)
throws DebugException
removeBreakpoint in interface Debuggerbp - The breakpoint to remove.
DebugException
public ArrayList<DebugWatchData> getWatches()
throws DebugException
getWatches in interface DebuggerDebugException
public ArrayList<DebugThreadData> getCurrentThreadData()
throws DebugException
getCurrentThreadData in interface DebuggerDebugException
public ArrayList<DebugStackData> getCurrentStackFrameData()
throws DebugException
getCurrentStackFrameData in interface DebuggerDebugException - if the current thread is running or there
are no suspended threads
TO DO: Config option for hiding DrJava subset of stack tracepublic Pair<com.sun.jdi.Location,OpenDefinitionsDocument> preloadDocument(com.sun.jdi.Location location)
public void scrollToSource(DebugStackData stackData)
throws DebugException
scrollToSource in interface DebuggerstackData - Stack data containing location to display
DebugException - if current thread is not suspendedpublic void scrollToSource(Breakpoint bp)
scrollToSource in interface Debuggerbp - the breakpoint
public void scrollToSource(Breakpoint bp,
boolean shouldHighlight)
bp - the breakpoint
public Breakpoint getBreakpoint(int line,
String className)
getBreakpoint in interface Debuggerline - The line number of the breakpointclassName - The name of the class the breakpoint's in
com.sun.jdi.VirtualMachine getVM()
com.sun.jdi.request.EventRequestManager getEventRequestManager()
PendingRequestManager getPendingRequestManager()
com.sun.jdi.ThreadReference getThreadAt(int i)
i - index into the stack of suspended threadscom.sun.jdi.ThreadReference getCurrentRunningThread()
private void _ensureReady()
throws DebugException
IllegalStateException - if debugger is not active
DebugException - if an exception was detected in the EventHandlerThreadvoid eventHandlerError(Throwable t)
t - Error occurring in the EventHandlerThread
private void _attachToVM()
throws DebugException
DebugException
private com.sun.jdi.connect.AttachingConnector _getAttachingConnector()
throws DebugException
DebugExceptionboolean setCurrentThread(com.sun.jdi.ThreadReference thread)
IllegalArgumentException - if thread is not suspended.
Vector<com.sun.jdi.ReferenceType> getReferenceTypes(String className,
int lineNumber)
If custom class loaders are in use, multiple copies of the class may be loaded, so all are returned.
private com.sun.jdi.ThreadReference _getThreadFromDebugThreadData(DebugThreadData d)
throws NoSuchElementException
NoSuchElementException - if the thread could not be found
private void _resumeFromStep()
throws DebugException
DebugException
private void _resumeHelper(boolean fromStep)
throws DebugException
fromStep - Whether to copy back the variables from the current debug interpreter and switch to the next
suspended thread.
DebugException
private void _resumeThread(com.sun.jdi.ThreadReference thread,
boolean fromStep)
throws DebugException
thread - Thread to resumefromStep - Whether to copy back the variables from
the current debug interpreter and switch to the next
suspended thread.
IllegalArgumentException - if thread is null
DebugException
private void _stepHelper(Debugger.StepType type,
boolean shouldNotify)
throws DebugException
type - The type of step to performshouldNotify - Whether to generate a step event
DebugExceptionvoid reachedBreakpoint(com.sun.jdi.request.BreakpointRequest request)
request - The BreakPointRequest reached by the debuggerprivate void scrollToSource(com.sun.jdi.Location location)
private void scrollToSource(com.sun.jdi.Location location,
boolean shouldHighlight)
private void openAndScroll(OpenDefinitionsDocument doc,
com.sun.jdi.Location location,
boolean shouldHighlight)
doc - Document to openlocation - Location to display
private void openAndScroll(OpenDefinitionsDocument doc,
int line,
String className,
boolean shouldHighlight)
doc - Document to openline - the line number to displayclassName - the name of the appropriate classvoid printMessage(String message)
message - Message to displayprivate void _hideWatches()
private void _updateWatches()
private void _dumpVariablesIntoInterpreterAndSwitch()
throws DebugException
DebugExceptionprivate String _getPromptString(com.sun.jdi.ThreadReference threadRef)
private com.sun.jdi.StringReference _mirrorString(String s,
List<com.sun.jdi.ObjectReference> toRelease)
throws DebugException
DebugException
private com.sun.jdi.ArrayReference _mirrorArray(String elementClass,
List<? extends com.sun.jdi.ObjectReference> elts,
com.sun.jdi.ThreadReference thread,
List<com.sun.jdi.ObjectReference> toRelease)
throws DebugException
DebugException
private com.sun.jdi.ObjectReference _box(com.sun.jdi.PrimitiveValue val,
com.sun.jdi.ThreadReference thread,
List<com.sun.jdi.ObjectReference> toRelease)
throws DebugException
DebugException
private com.sun.jdi.PrimitiveValue _unbox(com.sun.jdi.ObjectReference val,
com.sun.jdi.ThreadReference thread)
throws DebugException
DebugException - If the value is not of a type that can be unboxed, or if an error
occurs in the unboxing method invocation.
private com.sun.jdi.ReferenceType _getClass(String name)
throws DebugException
DebugException - If no loaded class has the given name.void currThreadSuspended()
void currThreadSuspended(com.sun.jdi.request.BreakpointRequest request)
request - The BreakPointRequest reached by the debugger
private void _switchToSuspendedThread()
throws DebugException
DebugException
private void _switchToSuspendedThread(com.sun.jdi.request.BreakpointRequest request)
throws DebugException
DebugException
private void _switchToSuspendedThread(com.sun.jdi.request.BreakpointRequest request,
boolean updateWatches)
throws DebugException
request - The BreakPointRequest reached by the debugger, or null if not a breakpointupdateWatches - A flag that is false if the current file does not have debug information. This prevents the
default interpreter's watch values from being shown.
DebugExceptionprivate String _getUniqueThreadName(com.sun.jdi.ThreadReference thread)
private void _copyVariablesFromInterpreter()
throws DebugException
DebugExceptionInterpreterJVM.getVariableValue(java.lang.String),
GET_VARIABLE_VALUE_SIGprivate void _removeAllDebugInterpreters()
private void _removeCurrentDebugInterpreter(boolean fromStep)
fromStep - A flat switch specifying a switch to the default interpreter since we don't want to switch to the
next debug interpreter and display its watch data. We would like to just not have an active interpreter and put up
an hourglass over the interactions pane, but the interpreterJVM must have an active interpreter.
private void _currThreadResumed()
throws DebugException
DebugExceptionprivate void _switchToInterpreterForThreadReference(com.sun.jdi.ThreadReference threadRef)
threadRef - The ThreadRefernce corresponding to the interpreter to switch tovoid threadStarted()
void currThreadDied()
throws DebugException
DebugExceptionvoid nonCurrThreadDied()
void notifyDebuggerShutdown()
void notifyDebuggerStarted()
void notifyStepRequested()
private static com.sun.jdi.Value _invokeMethod(com.sun.jdi.ThreadReference thread,
com.sun.jdi.ObjectReference receiver,
String name,
String signature,
com.sun.jdi.Value... args)
throws DebugException
DebugException
private static com.sun.jdi.Value _invokeStaticMethod(com.sun.jdi.ThreadReference thread,
com.sun.jdi.ClassType location,
String name,
String signature,
com.sun.jdi.Value... args)
throws DebugException
signature - A method signature descriptor to match.
For example: "(Ljava/lang/String;)Ljava/lang/Object;".
DebugException
private static com.sun.jdi.Value _invokeConstructor(com.sun.jdi.ThreadReference thread,
com.sun.jdi.ClassType location,
String signature,
com.sun.jdi.Value... args)
throws DebugException
signature - A method signature descriptor matching the corresponding <init>
method. For example: "(Ljava/lang/String;)V". The return type
will always be void.
DebugException
private static com.sun.jdi.Value _getStaticField(com.sun.jdi.ReferenceType location,
String name)
throws DebugException
DebugExceptionpublic LanguageLevelStackTraceMapper getLLSTM()
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||