MultiBreakpointsTarg ptr = new MultiBreakpointsTarg(nthreads, nhits);
// for (int i = 0; i < nthreads; i++) { // ptr.console(i); // }
}
// The brute force approach for simplicity - don't use reflection // nor set thread specific bkpts. Use of those features would // make for interesting tests too, and maybe would prove that // we don't really have to bother doing it this dumb way.
void console(finalint num, finalint nhits) { final InputStreamReader isr = new InputStreamReader(System.in); final BufferedReader br = new BufferedReader(isr);
// Create the threads // //final String threadName = "DebuggeeThread: " + num; final String threadName = "" + num; Thread thrd = newThread( threadName ) { publicvoid run() { synchronized( isr ) { boolean done = false; try { // For each thread, run until numHits bkpts have been hit for( int i = 0; i < nhits; i++ ) { // This is a tendril from the original jdb test. // It could probably be deleted.
System.out.println("Thread " + threadName + " Enter a string: ");
String s = "test" + num; switch (num) { case0: bkpt0(); break; case1: bkpt1(); break; case2: bkpt2(); break; case3: bkpt3(); break; case4: bkpt4(); break; case5: bkpt5(); break; case6: bkpt6(); break; case7: bkpt7(); break; case8: bkpt8(); break; case9: bkpt9(); break; case10: bkpt10(); break; case11: bkpt11(); break; case12: bkpt12(); break; case13: bkpt13(); break; case14: bkpt14(); break; case15: bkpt15(); break; case16: bkpt16(); break; case17: bkpt17(); break; case18: bkpt18(); break; case19: bkpt19(); break; case20: bkpt20(); break; case21: bkpt21(); break; case22: bkpt22(); break; case23: bkpt23(); break; case24: bkpt24(); break; case25: bkpt25(); break; case26: bkpt26(); break; case27: bkpt27(); break; case28: bkpt28(); break; case29: bkpt29(); break;
}
System.out.println("Thread " + threadName + " You entered : " + s);
for (int ii = 0 ; ii < nthreads; ii++) {
bkpts[ii] = setBreakpoint("MultiBreakpointsTarg", "bkpt" + ii, "()V");
} /* *resumethetargetlisteningforevents
*/
listenUntilVMDisconnect();
for ( int ii = 0; ii < nthreads; ii++) { if (hits[ii] != nhits) {
failure("FAILED: Expected " + nhits + " breakpoints for thread " + ii + " but only got " + hits[ii]);
}
}