- 所有超级接口:
-
Mirror
- 所有已知子接口:
-
AccessWatchpointRequest
,BreakpointRequest
,ClassPrepareRequest
,ClassUnloadRequest
,ExceptionRequest
,MethodEntryRequest
,MethodExitRequest
,ModificationWatchpointRequest
,MonitorContendedEnteredRequest
,MonitorContendedEnterRequest
,MonitorWaitedRequest
,MonitorWaitRequest
,StepRequest
,ThreadDeathRequest
,ThreadStartRequest
,VMDeathRequest
,WatchpointRequest
表示对事件通知的请求。示例包括
BreakpointRequest
和ExceptionRequest
。当发生启用请求的事件时,EventSet
将被放置在EventQueue
上。现有事件请求的集合由EventRequestManager
管理。
可以通过过滤器控制为事件请求生成的事件数量。过滤器提供事件必须满足的附加约束,然后才会将其放置在事件队列中。可以通过多次调用过滤器添加方法(例如ExceptionRequest.addClassFilter(java.lang.String classPattern)
)来使用多个过滤器。只有在事件被禁用时才能一次向事件添加一个过滤器。多个过滤器按照添加到请求的顺序使用截断与运算。只有满足所有过滤器的事件才会放置在事件队列中。
可用过滤器的集合取决于事件请求,一些过滤器的示例包括:
- 线程过滤器允许控制生成事件的线程。
- 类过滤器允许控制事件发生的类。
- 实例过滤器允许控制事件发生的实例。
- 计数过滤器允许控制事件报告的次数。
任何以EventRequest
作为参数的EventRequest
上的方法可能会在目标VM断开连接并且VMDisconnectEvent
已经或可以从EventQueue
中读取时抛出VMDisconnectedException
。
任何以EventRequest
作为参数的EventRequest
上的方法可能会在目标VM耗尽内存时抛出VMOutOfMemoryException
。
- 自版本:
- 1.3
- 参见:
-
Field Summary
Modifier and TypeFieldDescriptionstatic final int
在事件发生时挂起所有线程static final int
在事件发生时仅挂起生成事件的线程static final int
在事件发生时不挂起任何线程 -
Method Summary
Modifier and TypeMethodDescriptionvoid
addCountFilter
(int count) 将请求的事件限制为在给定次数发生后最多报告一次。void
disable()
void
enable()
与setEnabled(true)
相同。getProperty
(Object key) 返回具有指定键的属性的值。boolean
确定此事件请求当前是否已启用。void
putProperty
(Object key, Object value) 向此请求添加任意键/值“属性”。void
setEnabled
(boolean val) 启用或禁用此事件请求。void
setSuspendPolicy
(int policy) 确定在目标VM中请求的事件发生时要挂起的线程。int
返回描述在目标VM中请求的事件发生时要挂起的线程的值。Methods declared in interface com.sun.jdi.Mirror
toString, virtualMachine
-
Field Details
-
SUSPEND_NONE
static final int SUSPEND_NONE在事件发生时不挂起任何线程- 参见:
-
SUSPEND_EVENT_THREAD
static final int SUSPEND_EVENT_THREAD在事件发生时仅挂起生成事件的线程- 参见:
-
SUSPEND_ALL
static final int SUSPEND_ALL在事件发生时挂起所有线程- 参见:
-
-
Method Details
-
isEnabled
boolean isEnabled()确定此事件请求当前是否已启用。- 返回:
-
true
如果已启用;否则false
。
-
setEnabled
void setEnabled(boolean val) 启用或禁用此事件请求。在此事件请求被禁用时,将忽略该事件请求,并且如果其任何线程达到事件请求,目标VM将不会停止。已禁用的事件请求仍然存在,并包括在事件请求列表中,例如EventRequestManager.breakpointRequests()
。- 参数:
-
val
- 如果要启用事件请求,则为true
;否则为false
。 - 抛出:
-
InvalidRequestStateException
- 如果此请求已被删除。 -
IllegalThreadStateException
- 如果这是一个StepRequest,val
为true
,并且请求中命名的线程已经死亡或尚未启动。
-
enable
void enable()与setEnabled(true)
相同。- 抛出:
-
InvalidRequestStateException
- 如果此请求已被删除。 -
IllegalThreadStateException
- 如果这是一个StepRequest,并且请求中命名的线程已经死亡或尚未启动。
-
disable
void disable()- 抛出:
-
InvalidRequestStateException
- 如果此请求已被删除。
-
addCountFilter
void addCountFilter(int count) 将请求的事件限制为在给定次数发生后最多报告一次。当此过滤器达到count - 1
次时,不会报告事件。要请求一次性事件,请使用计数为1调用此方法。一旦计数达到0,将应用此请求中的任何后续过滤器。如果这些过滤器中没有一个导致事件被抑制,则会报告事件。否则,不会报告事件。在任一情况下,此请求不会报告后续事件。
- 参数:
-
count
- 生成事件之前的次数。 - 抛出:
-
InvalidRequestStateException
- 如果此请求当前已启用或已被删除。只能向已禁用的请求添加过滤器。 -
IllegalArgumentException
- 如果count
小于1。
-
setSuspendPolicy
void setSuspendPolicy(int policy) 确定在目标VM中请求的事件发生时要挂起的线程。使用SUSPEND_ALL
来挂起目标VM中的所有线程(默认)。使用SUSPEND_EVENT_THREAD
来仅挂起生成事件的线程。使用SUSPEND_NONE
来不挂起任何线程。通过事件进行的线程挂起具有与显式请求的挂起相同的功能。有关详细信息,请参阅
ThreadReference.suspend()
和VirtualMachine.suspend()
。- 参数:
-
policy
- 选定的挂起策略。 - 抛出:
-
InvalidRequestStateException
- 如果此请求当前已启用或已删除。挂起策略只能在禁用的请求中设置。 -
IllegalArgumentException
- 如果策略参数包含非法值。
-
suspendPolicy
int suspendPolicy()- 返回:
- 此请求的当前挂起模式
-
putProperty
向此请求添加一个任意的键/值“属性”。客户端可以使用该属性将应用程序信息与请求关联起来;这些客户端设置的属性不会被JDI内部使用。get/putProperty
方法提供对一个小型每个实例的映射的访问。这与Properties
不应混淆。如果值为null,则此方法将删除该属性。
- 参见:
-
getProperty
返回具有指定键的属性的值。只有使用putProperty(java.lang.Object, java.lang.Object)
添加的属性将返回非null值。- 返回:
- 此属性的值或null
- 参见:
-