|
org.netbeans.api.debugger.jpda/2 2.4.31 | |||||||||
PREV PACKAGE NEXT PACKAGE | FRAMES NO FRAMES |
See:
Description
Class Summary | |
---|---|
EditorContext | Defines bridge to editor and src hierarchy. |
SmartSteppingCallback | Listens on stepping engine and defines classes / places the debugger can stop in. |
SourcePathProvider | Defines source path for debugger. |
VariablesFilter | This filter allows to change nodes in Locals View and Watches View for some concrete variable types. |
VariablesFilterAdapter | Default "empty" implementation of VariablesFilter returns original
values (name, icon, fields, ...) for given variable. |
JPDA Debugger SPIs defines support for Smart Stepping, Variables Filterring
and filterring of all Debugger Views.
SmartSteppingFilter
:
Defines list of class exclusion filters to be used to filter stepping
in debugged session.SmartSteppingCallback
:
Listens on stepping engine and defines classes / places the debugger
can stop in. JPDAThread
: Represents
context for SmartSteppingCallback (class name, method name, line
number, ...).SmartSteppingCallback.stopHere(org.netbeans.spi.debugger.ContextProvider, org.netbeans.api.debugger.jpda.JPDAThread, org.netbeans.api.debugger.jpda.SmartSteppingFilter)
method). But this step-by-step method is slow. That is why the second,
more powerfull method is here. SSListener can define some set of class
exclusion patterns (like java.*, com.abba.Loader, ...). This set of
exclusion patterns managed by SmartSteppingFilter
class defines scope
for Step Actions in more powerfull way.class MyClass {
private void xxxBigBusinessMethod () {
// generated code is here!
}
public void userMethod () {
// user code is here...
}
}
SmartSteppingCallback
:public class SmartSteppingCallbackImpl extends SmartSteppingCallback {And register full class name of our implementation (packagename.SmartSteppingCallback) in the file named:
public void initFilter (SmartSteppingFilter f) {}
public boolean stopHere (JPDAThread thread, SmartSteppingFilter f) {
String methodName = thread.getMethodName ();
return !methodName.startsWith ("xxx"); // if method starts with "xxx" DO NOT stop there!
}
}
META-INF\debugger\netbeans-JPDADebuggerEngine\org.netbeans.spi.debugger.jpda.SmartSteppingCallback
TreeModelFilter
first:public class CallStackFilter implements TreeModelFilter {And register it in file:
public Object[] getChildren (TreeModel original, Object parent, int from, int to) {
Object[] originalCh = original.getChildren (parent, from, to);
int i, k = originalCh.length;
ArrayList newCh = new ArrayList ();
boolean in = false;
for (i = 0; i < k; i++) {
if (! (originalCh [i] instanceof CallStackFrame)) {
newCh.add (originalCh [i]);
continue;
}
CallStackFrame f = (CallStackFrame) originalCh [i];
String className = f.getClassName ();
if (className.startsWith ("java")) {
if (!in) {
newCh.add (new JavaxSwing ());
in = true;
}
} else {
in = false;
newCh.add (f);
}
}
return newCh.toArray ();
}
public Object getRoot (TreeModel original) {
return original.getRoot ();
}
public boolean isLeaf (TreeModel original, Object node)
throws UnknownTypeException {
if (node instanceof JavaxSwing) return true;
return original.isLeaf (node);
}
private static class JavaFrames {}
}
Meta-inf\debugger\netbeans-JPDADebuggerEngine\CallStackView\org.netbeans.spi.viewmodel.TreeModelFilterAs you can see on the picture this Filter replaces some original frames by some dummy node.
public class CallStackFilter implements NodeModel {And registration:
public String getDisplayName (Object node) throws UnknownTypeException {
if (node instanceof JavaFrames)
return "Java Callstack Frames";
throw new UnknownTypeException (node);
}
public String getIconBase (Object node) throws UnknownTypeException {
if (node instanceof JavaFrames)
return "org/netbeans/examples/debugger/jpda/callstackviewfilterring/NonCurrentFrame";
throw new UnknownTypeException (node);
}
public String getShortDescription (Object node) throws UnknownTypeException {
if (node instanceof JavaFrames)
return "Unimportant hidden callstack frames";
throw new UnknownTypeException (node);
}
}
Meta-inf\debugger\netbeans-JPDADebuggerEngine\CallStackView\org.netbeans.spi.viewmodel.TreeModelFilter
|
org.netbeans.api.debugger.jpda/2 2.4.31 | |||||||||
PREV PACKAGE NEXT PACKAGE | FRAMES NO FRAMES |