-
- All Superinterfaces:
-
Mirror
public interface EventRequestManager extends Mirror
管理创建和删除EventRequest
s。 该接口的单个实现者存在于特定VM中,并通过VirtualMachine.eventRequestManager()
进行访问- 从以下版本开始:
- 1.3
- 另请参见:
-
EventRequest
,Event
,BreakpointRequest
,BreakpointEvent
,VirtualMachine
-
-
方法摘要
-
Methods inherited from interface com.sun.jdi.Mirror
toString, virtualMachine
-
-
-
-
方法详细信息
-
createClassPrepareRequest
ClassPrepareRequest createClassPrepareRequest()
- 结果
-
创建的
ClassPrepareRequest
-
createClassUnloadRequest
ClassUnloadRequest createClassUnloadRequest()
- 结果
-
创建的
ClassUnloadRequest
-
createThreadStartRequest
ThreadStartRequest createThreadStartRequest()
- 结果
-
创建的
ThreadStartRequest
-
createThreadDeathRequest
ThreadDeathRequest createThreadDeathRequest()
- 结果
-
创建的
ThreadDeathRequest
-
createExceptionRequest
ExceptionRequest createExceptionRequest(ReferenceType refType, boolean notifyCaught, boolean notifyUncaught)
创建一个新的禁用ExceptionRequest
。 新事件请求被添加到由此EventRequestManager管理的列表中。 使用EventRequest.enable()
激活此事件请求。可以为异常事件选择特定的异常类型及其子类。 可以选择捕获异常,未捕获的异常或两者。 但是请注意,在抛出异常的时候,并不总是能够确定它是否被真正的捕获。 详见
ExceptionEvent.catchLocation()
。- 参数
-
refType
- 如果非空,则指定将引用作为refType实例的异常。 注意:这将包括子类型的实例。 如果为null,则将报告所有实例 -
notifyCaught
- 如果为true,将捕获异常。 -
notifyUncaught
- 如果为真,将报告未捕获的异常。 - 结果
-
创建的
ExceptionRequest
-
createMethodEntryRequest
MethodEntryRequest createMethodEntryRequest()
- 结果
-
创建的
MethodEntryRequest
-
createMethodExitRequest
MethodExitRequest createMethodExitRequest()
- 结果
-
创建的
MethodExitRequest
-
createMonitorContendedEnterRequest
MonitorContendedEnterRequest createMonitorContendedEnterRequest()
创建一个新的禁用MonitorContendedEnterRequest
。 新事件请求被添加到由此EventRequestManager管理的列表中。 使用EventRequest.enable()
激活此事件请求。 并非所有目标虚拟机都支持此操作。 使用VirtualMachine.canRequestMonitorEvents()
确定是否支持该操作。- 结果
-
创建的
MonitorContendedEnterRequest
- 异常
-
UnsupportedOperationException
- 如果目标VM不支持此操作。 - 从以下版本开始:
- 1.6
-
createMonitorContendedEnteredRequest
MonitorContendedEnteredRequest createMonitorContendedEnteredRequest()
创建一个新的禁用MonitorContendedEnteredRequest
。 新事件请求被添加到由此EventRequestManager管理的列表中。 使用EventRequest.enable()
激活此事件请求。 并非所有目标虚拟机都支持此操作。 使用VirtualMachine.canRequestMonitorEvents()
来确定是否支持该操作。- 结果
-
创建的
MonitorContendedEnteredRequest
- 异常
-
UnsupportedOperationException
- 如果目标VM不支持此操作。 - 从以下版本开始:
- 1.6
-
createMonitorWaitRequest
MonitorWaitRequest createMonitorWaitRequest()
创建一个新的禁用MonitorWaitRequest
。 新事件请求被添加到由此EventRequestManager管理的列表中。 使用EventRequest.enable()
激活此事件请求。 并非所有目标虚拟机都支持此操作。 使用VirtualMachine.canRequestMonitorEvents()
来确定是否支持该操作。- 结果
-
创建的
MonitorWaitRequest
- 异常
-
UnsupportedOperationException
- 如果目标VM不支持此操作。 - 从以下版本开始:
- 1.6
-
createMonitorWaitedRequest
MonitorWaitedRequest createMonitorWaitedRequest()
创建一个新的禁用MonitorWaitedRequest
。 新事件请求被添加到由此EventRequestManager管理的列表中。 使用EventRequest.enable()
激活此事件请求。 并非所有目标虚拟机都支持此操作。 使用VirtualMachine.canRequestMonitorEvents()
来确定是否支持该操作。- 结果
-
创建的
MonitorWaitedRequest
- 异常
-
UnsupportedOperationException
- 如果目标VM不支持此操作。 - 从以下版本开始:
- 1.6
-
createStepRequest
StepRequest createStepRequest(ThreadReference thread, int size, int depth)
创建一个新的禁用StepRequest
。 新事件请求被添加到由此EventRequestManager管理的列表中。 使用EventRequest.enable()
激活此事件请求。返回的请求将仅在指定的
thread
控制步进; 所有其他线程将不受影响。size
值StepRequest.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参数包含非法值。
-
createBreakpointRequest
BreakpointRequest createBreakpointRequest(Location location)
创建一个新的禁用BreakpointRequest
。 给定的Location
必须具有有效(即非负)代码索引。 新的断点被添加到由此EventRequestManager管理的列表中。 允许在同一位置的多个断点。 使用EventRequest.enable()
激活此事件请求。- 参数
-
location
- 新断点的位置。 - 结果
-
创建的
BreakpointRequest
- 异常
-
NativeMethodException
- 如果位置在本机方法之内。
-
createAccessWatchpointRequest
AccessWatchpointRequest createAccessWatchpointRequest(Field field)
创建一个新的禁用的观察点,监视对指定字段的访问。 新的观察点被添加到由此EventRequestManager管理的列表中。 允许同一领域的多个观察点。 使用EventRequest.enable()
激活此事件请求。并非所有目标虚拟机都支持此操作。 使用
VirtualMachine.canWatchFieldAccess()
来确定是否支持该操作。- 参数
-
field
- 要观看的字段 - 结果
- 创建的观察点
- 异常
-
UnsupportedOperationException
- 如果目标虚拟机不支持此操作。
-
createModificationWatchpointRequest
ModificationWatchpointRequest createModificationWatchpointRequest(Field field)
创建一个新的禁用的观察点,监视对指定字段的访问。 新的观察点被添加到由此EventRequestManager管理的列表中。 允许同一领域的多个观察点。 使用EventRequest.enable()
激活此事件请求。并非所有目标虚拟机都支持此操作。 使用
VirtualMachine.canWatchFieldModification()
来确定是否支持该操作。- 参数
-
field
- 要观看的字段 - 结果
- 创建的观察点
- 异常
-
UnsupportedOperationException
- 如果目标虚拟机不支持此操作。
-
createVMDeathRequest
VMDeathRequest createVMDeathRequest()
创建一个新的禁用VMDeathRequest
。 新请求将添加到此EventRequestManager管理的列表中。 使用EventRequest.enable()
激活此事件请求。该请求(如果启用)将导致目标VM终止时发送
VMDeathEvent
。VMDeathRequest的暂停策略为
SUSPEND_ALL
可用于确保在VM死亡之前处理进入的SUSPEND_NONE
或SUSPEND_EVENT_THREAD
事件。 如果所有的事件处理是在同一个线程正在做作为正在读取事件集,使该请求是所有需要,因为VM将被挂起,直到EventSet
含有VMDeathEvent
被恢复。并非所有目标虚拟机都支持此操作。 使用
VirtualMachine.canRequestVMDeathEvent()
确定是否支持该操作。- 结果
- 创建的请求
- 异常
-
UnsupportedOperationException
- 如果目标VM不支持此操作。 - 从以下版本开始:
- 1.4
-
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
-
deleteEventRequests
void deleteEventRequests(List<? extends EventRequest> eventRequests)
删除EventRequest
的列表。- 参数
-
eventRequests
- 要删除的eventRequests的列表 - 另请参见:
-
deleteEventRequest(EventRequest)
-
deleteAllBreakpoints
void deleteAllBreakpoints()
删除此EventRequestManager管理的所有断点。
-
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
-
-