// We need this to be running so the bkpt // can be hit immediately when it is enabled // in the back-end. while(active) {
bkpt();
}
System.out.println("Goodbye from SuspendThreadTarg, count = " + count);
}
}
publicstaticvoid main(String[] args) throws Exception { new SuspendThreadTest(args).startTests();
}
/********** event handlers **********/
// 1000 makes the test take over 2 mins on win32 staticint maxBkpts = 200; volatileint bkptCount; // to guard against spurious wakeups from bkptSignal.wait() boolean signalSent; // signal that a breakpoint has happened finalprivate Object bkptSignal = new Object() {};
BreakpointRequest bkptRequest;
Field debuggeeCountField, debuggeeActiveField;
// When we get a bkpt we want to disable the request, // resume the debuggee, and then re-enable the request publicvoid breakpointReached(BreakpointEvent event) {
System.out.println("Got BreakpointEvent: " + bkptCount + ", debuggeeCount = " +
((LongValue)targetClass.
getValue(debuggeeCountField)).value()
);
bkptRequest.disable();
}
// The main thread watchs the bkptCount to // see if bkpts stop coming in. The // test _should_ fail well before maxBkpts bkpts. synchronized (bkptSignal) { if (bkptCount++ < maxBkpts) {
bkptRequest.enable();
}
signalSent = true;
bkptSignal.notifyAll();
}
}
// Without this, it is a SUSPEND_ALL bkpt and the test will pass
bkptRequest.setSuspendPolicy(EventRequest.SUSPEND_EVENT_THREAD);
bkptRequest.enable();
int prevBkptCount;
vm().resume(); synchronized (bkptSignal) { while (bkptCount < maxBkpts) {
prevBkptCount = bkptCount; // If we don't get a bkpt within 5 secs, // the test fails
signalSent = false; do { try {
bkptSignal.wait(5000);
} catch (InterruptedException ee) {
}
} while (signalSent == false); if (prevBkptCount == bkptCount) {
failure("failure: test hung"); break;
}
}
}
println("done with loop");
bkptRequest.disable();
removeListener(this);
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.