模块  jdk.jdi
软件包  com.sun.jdi.request

Interface EventRequestManager

    • 方法详细信息

      • createExceptionRequest

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

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

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

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

        返回的请求将仅控制指定的thread中的步进; 所有其他线程将不受影响。 每次代码索引更改时, sizeStepRequest.STEP_MIN将生成步骤事件。 它代表可用的最小步长,通常映射到指令级别。 每次源行更改时, sizeStepRequest.STEP_LINE将生成一个步骤事件,除非行号信息不可用,在这种情况下,将执行STEP_MIN。 例如,在执行已被VirtualMachine.redefineClasses(java.util.Map<? extends com.sun.jdi.ReferenceType, byte[]>)操作废弃的方法期间,没有行号信息可用。 depthStepRequest.STEP_INTO将在任何被调用的方法中生成步骤事件。 depthStepRequest.STEP_OVER将步骤事件限制为当前帧或调用者帧。 depthStepRequest.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)
        创建一个新的禁用观察点,监视对指定字段的访问。 新观察点将添加到此EventRequestManager管理的列表中。 允许在同一个字段上有多个观察点。 使用EventRequest.enable()激活此事件请求。

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

        参数
        字段 - 字段的领域
        结果
        创建的观察点
        异常
        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对象。
      • modificationWatchpointRequests

        List<ModificationWatchpointRequest> modificationWatchpointRequests()
        返回已启用和已禁用的修改观察点请求的不可修改列表。 此列表是这些请求的实时视图,因此在添加和删除请求时进行更改。
        结果
        所有ModificationWatchpointRequest对象。
      • 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