/** Second part of debugger start procedure. */
  private void startDebugger() {
    threadManager = new ThreadManager(this);

    setBreakpoints();
    updateWatches();
    println(bundle.getString("CTL_Debugger_running"), STL_OUT);
    setDebuggerState(DEBUGGER_RUNNING);

    virtualMachine.resume();

    // start refresh thread .................................................
    if (debuggerThread != null) debuggerThread.stop();
    debuggerThread =
        new Thread(
            new Runnable() {
              public void run() {
                for (; ; ) {
                  try {
                    Thread.sleep(5000);
                  } catch (InterruptedException ex) {
                  }
                  if (getState() == DEBUGGER_RUNNING) threadGroup.refresh();
                }
              }
            },
            "Debugger refresh thread"); // NOI18N
    debuggerThread.setPriority(Thread.MIN_PRIORITY);
    debuggerThread.start();
  }
 /** Go. */
 public synchronized void go() throws DebuggerException {
   if (virtualMachine == null) return;
   setLastAction(ACTION_GO);
   removeStepRequest();
   virtualMachine.resume();
   threadGroup.refresh();
   super.go();
 }
 /** Step out. */
 public synchronized void stepOut() throws DebuggerException {
   if (virtualMachine == null) return;
   removeStepRequest();
   try {
     setLastAction(ACTION_STEP_OUT);
     stepRequest =
         requestManager.createStepRequest(
             currentThread.getThreadReference(), StepRequest.STEP_LINE, StepRequest.STEP_OUT);
     stepRequest.addCountFilter(1);
     stepRequest.setSuspendPolicy(EventRequest.SUSPEND_ALL);
     operator.register(stepRequest, this);
     stepRequest.enable();
     virtualMachine.resume();
     super.stepOut();
   } catch (DuplicateRequestException e) {
     e.printStackTrace();
   }
 }
Beispiel #4
0
 public void resume() {
   DebuggerManagerThreadImpl.assertIsManagerThread();
   if (myPausePressedCount > 0) {
     myPausePressedCount--;
   }
   clearCaches();
   LOG.debug("before resume VM");
   try {
     myVirtualMachine.resume();
   } catch (InternalException e) {
     // ok to ignore. Although documentation says it is safe to invoke resume() on running VM,
     // sometimes this leads to com.sun.jdi.InternalException: Unexpected JDWP Error: 13
     // (THREAD_NOT_SUSPENDED)
     LOG.info(e);
   }
   LOG.debug("VM resumed");
   // logThreads();
 }
 @Override
 public void resume() {
   virtualMachine.resume();
 }