Package com.google.code.vimsztool.debug

Source Code of com.google.code.vimsztool.debug.StepManager

package com.google.code.vimsztool.debug;

import java.util.List;

import com.sun.jdi.ThreadReference;
import com.sun.jdi.VirtualMachine;
import com.sun.jdi.request.EventRequest;
import com.sun.jdi.request.EventRequestManager;
import com.sun.jdi.request.StepRequest;

public class StepManager {

  public static String step(int stepDepth) {
    Debugger debugger = Debugger.getInstance();
    VirtualMachine vm = debugger.getVm();
    SuspendThreadStack threadStack = SuspendThreadStack.getInstance();
    ThreadReference threadRef = threadStack.getCurThreadRef();

    EventRequestManager mgr = vm.eventRequestManager();

    List<StepRequest> steps = mgr.stepRequests();
    for (int i = 0; i < steps.size(); i++) {
      StepRequest step = steps.get(i);
      if (step.thread().equals(threadRef)) {
        mgr.deleteEventRequest(step);
        break;
      }
    }

    StepRequest request = mgr.createStepRequest(threadRef, StepRequest.STEP_LINE, stepDepth);
    List<String> excludeFilters = StepFilterConfiger.getDefaultFilter();
    for (String filter : excludeFilters) {
      request.addClassExclusionFilter(filter);
    }
    request.addCountFilter(1);
    request.setSuspendPolicy(EventRequest.SUSPEND_EVENT_THREAD);
    request.enable();
   
    threadRef.resume();
    threadStack.clean();
    return "";
  }

}
TOP

Related Classes of com.google.code.vimsztool.debug.StepManager

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.