Module  jdk.jdi
软件包  com.sun.jdi.request

Interface EventRequestManager

    • 方法详细信息

      • createExceptionRequest

        ExceptionRequest createExceptionRequest​(ReferenceType refType,
                                                boolean notifyCaught,
                                                boolean notifyUncaught)
        创建一个新的禁用ExceptionRequest 新事件请求被添加到由此EventRequestManager管理的列表中。 使用EventRequest.enable()激活此事件请求。

        可以为异常事件选择特定的异常类型及其子类。 可以选择捕获异常,未捕获的异常或两者。 但是请注意,在抛出异常的时候,并不总是能够确定它是否被真正的捕获。 详见ExceptionEvent.catchLocation()

        参数
        refType - 如果非空,则指定将引用作为refType实例的异常。 注意:这将包括子类型的实例。 如果为null,则将报告所有实例
        notifyCaught - 如果为true,将捕获异常。
        notifyUncaught - 如果为真,将报告未捕获的异常。
        结果
        创建的ExceptionRequest
      • createStepRequest

        StepRequest createStepRequest​(ThreadReference thread,
                                      int size,
                                      int depth)
        创建一个新的禁用StepRequest 新事件请求被添加到由此EventRequestManager管理的列表中。 使用EventRequest.enable()激活此事件请求。

        返回的请求将仅在指定的thread控制步进; 所有其他线程将不受影响。 sizeStepRequest.STEP_MIN将在每次代码索引更改时生成步骤事件。 它表示可用的最小步长,通常映射到指令级别。 size的值StepRequest.STEP_LINE将生成步骤事件每次源极线的变化,除非行号信息不可用,在这种情况下STEP_MIN将被代替完成。 例如,在通过VirtualMachine.redefineClasses(java.util.Map<? extends com.sun.jdi.ReferenceType, byte[]>)操作已被废弃的方法的执行期间,没有行号信息可用。 depth值为StepRequest.STEP_INTO将在任何调用的方法中生成步骤事件。 depth值为StepRequest.STEP_OVER将步骤事件限制为当前帧或呼叫帧。 depth值为StepRequest.STEP_OUT将步骤事件限制到呼叫者帧。 在步骤发生之前,所有深度限制都相对于调用堆栈。

        每个线程只允许一个待处理的步骤请求。

        请注意,在检测到第一步后,典型的调试器将要取消步进。 因此,下一行方法将执行以下操作:

           EventRequestManager mgr = myVM.{@link VirtualMachine#eventRequestManager eventRequestManager}(); StepRequest request = mgr.createStepRequest(myThread, StepRequest.{@link StepRequest#STEP_LINE STEP_LINE}, StepRequest.{@link StepRequest#STEP_OVER STEP_OVER}); request.{@link EventRequest#addCountFilter addCountFilter}(1); // next step only request.enable(); myVM.{@link VirtualMachine#resume resume}();  
        参数
        thread - 要步进的线程
        depth - 阶梯深度
        size - 步长
        结果
        创建的StepRequest
        异常
        DuplicateRequestException - 如果已经有指定线程的待处理步骤请求。
        IllegalArgumentException - 如果size或depth参数包含非法值。
      • createAccessWatchpointRequest

        AccessWatchpointRequest createAccessWatchpointRequest​(Field field)
        创建一个新的禁用的观察点,监视对指定字段的访问。 新的观察点被添加到由此EventRequestManager管理的列表中。 允许同一领域的多个观察点。 使用EventRequest.enable()激活此事件请求。

        并非所有目标虚拟机都支持此操作。 使用VirtualMachine.canWatchFieldAccess()来确定是否支持该操作。

        参数
        field - 要观看的字段
        结果
        创建的观察点
        异常
        UnsupportedOperationException - 如果目标虚拟机不支持此操作。
      • createModificationWatchpointRequest

        ModificationWatchpointRequest createModificationWatchpointRequest​(Field field)
        创建一个新的禁用的观察点,监视对指定字段的访问。 新的观察点被添加到由此EventRequestManager管理的列表中。 允许同一领域的多个观察点。 使用EventRequest.enable()激活此事件请求。

        并非所有目标虚拟机都支持此操作。 使用VirtualMachine.canWatchFieldModification()来确定是否支持该操作。

        参数
        field - 要观看的字段
        结果
        创建的观察点
        异常
        UnsupportedOperationException - 如果目标虚拟机不支持此操作。
      • deleteEventRequest

        void deleteEventRequest​(EventRequest eventRequest)
        删除eventRequest。 eventRequest被禁用,并从该EventRequestManager管理的请求中删除。 一旦eventRequest被删除,则不允许任何操作(例如, EventRequest.setEnabled(boolean) ) - 尝试这样做通常会导致一个InvalidRequestStateException 没有其他事件请求生效。

        因为此方法会更改事件请求的底层列表,而是尝试从请求访问器返回的列表中直接删除(例如下面):

          Iterator iter = requestManager.stepRequests().iterator();
           while (iter.hasNext()) {
              requestManager.deleteEventRequest(iter.next());
          } 
        可能会造成一个ConcurrentModificationException 而是使用deleteEventRequests(List)或复制列表。
        参数
        eventRequest - 要删除的eventRequest
      • stepRequests

        List<StepRequest> stepRequests​()
        返回启用和禁用的步骤请求的不可修改的列表。 此列表是这些请求的实时视图,因此在添加和删除请求时进行更改。
        结果
        全部StepRequest对象。
      • classPrepareRequests

        List<ClassPrepareRequest> classPrepareRequests​()
        返回启用和禁用的类准备请求的不可修改的列表。 此列表是这些请求的实时视图,因此在添加和删除请求时进行更改。
        结果
        全部ClassPrepareRequest对象。
      • classUnloadRequests

        List<ClassUnloadRequest> classUnloadRequests​()
        返回启用和禁用的类卸载请求的不可修改的列表。 此列表是这些请求的实时视图,因此在添加和删除请求时进行更改。
        结果
        全部ClassUnloadRequest对象。
      • threadStartRequests

        List<ThreadStartRequest> threadStartRequests​()
        返回启用和禁用的线程启动请求的不可修改的列表。 此列表是这些请求的实时视图,因此在添加和删除请求时进行更改。
        结果
        全部ThreadStartRequest对象。
      • threadDeathRequests

        List<ThreadDeathRequest> threadDeathRequests​()
        返回启用和禁用的线程死亡请求的不可修改的列表。 此列表是这些请求的实时视图,因此在添加和删除请求时进行更改。
        结果
        全部ThreadDeathRequest对象。
      • exceptionRequests

        List<ExceptionRequest> exceptionRequests​()
        返回启用和禁用的异常请求的不可修改的列表。 此列表是这些请求的实时视图,因此在添加和删除请求时进行更改。
        结果
        全部为ExceptionRequest对象。
      • breakpointRequests

        List<BreakpointRequest> breakpointRequests​()
        返回启用和禁用的断点请求的不可修改的列表。 此列表是这些请求的实时视图,因此在添加和删除请求时进行更改。
        结果
        所有BreakpointRequest对象的列表。
      • accessWatchpointRequests

        List<AccessWatchpointRequest> accessWatchpointRequests​()
        返回启用和禁用的访问观察点请求的不可修改的列表。 此列表是这些请求的实时视图,因此在添加和删除请求时进行更改。
        结果
        全部为AccessWatchpointRequest对象。
      • methodEntryRequests

        List<MethodEntryRequest> methodEntryRequests​()
        返回启用和禁用的方法条目请求的不可修改列表。 此列表是这些请求的实时视图,因此在添加和删除请求时进行更改。
        结果
        所有MethodEntryRequest对象的列表。
      • methodExitRequests

        List<MethodExitRequest> methodExitRequests​()
        返回启用和禁用的方法退出请求的不可修改的列表。 此列表是这些请求的实时视图,因此在添加和删除请求时进行更改。
        结果
        所有MethodExitRequest对象的列表。
      • monitorContendedEnterRequests

        List<MonitorContendedEnterRequest> monitorContendedEnterRequests​()
        返回启用和禁用的监视器竞争的输入请求的不可修改的列表。 此列表是这些请求的实时视图,因此在添加和删除请求时进行更改。
        结果
        所有MonitorContendedEnterRequest对象的列表。
        从以下版本开始:
        1.6
      • monitorContendedEnteredRequests

        List<MonitorContendedEnteredRequest> monitorContendedEnteredRequests​()
        返回已启用和禁用的已监视输入请求的不可修改的列表。 此列表是这些请求的实时视图,因此在添加和删除请求时进行更改。
        结果
        所有MonitorContendedEnteredRequest对象的列表。
        从以下版本开始:
        1.6
      • monitorWaitRequests

        List<MonitorWaitRequest> monitorWaitRequests​()
        返回启用和禁用的监视器等待请求的不可修改的列表。 此列表是这些请求的实时视图,因此在添加和删除请求时进行更改。
        结果
        所有MonitorWaitRequest对象的列表。
        从以下版本开始:
        1.6
      • monitorWaitedRequests

        List<MonitorWaitedRequest> monitorWaitedRequests​()
        返回启用和禁用的监视器等待请求的不可修改的列表。 此列表是这些请求的实时视图,因此在添加和删除请求时进行更改。
        结果
        所有MonitorWaitedRequest对象的列表。
        从以下版本开始:
        1.6
      • vmDeathRequests

        List<VMDeathRequest> vmDeathRequests​()
        返回启用和禁用的VM死亡请求的不可修改的列表。 此列表是这些请求的实时视图,因此在添加和删除请求时进行更改。 注意:未经请求的VMDeathEvent没有相应的请求。
        结果
        所有VMDeathRequest对象的列表。
        从以下版本开始:
        1.4