public interface EventRequestManager extends Mirror
EventRequest
の作成および削除を管理します。このインタフェースの単一の実装が、特定の VM 内に存在し、VirtualMachine.eventRequestManager()
を介してアクセスが行われます。EventRequest
, Event
, BreakpointRequest
, BreakpointEvent
, VirtualMachine
toString, virtualMachine
ClassPrepareRequest createClassPrepareRequest()
ClassPrepareRequest
を作成します。この EventRequestManager が管理するリストに新しいイベント要求が追加されます。このイベント要求を有効にするには、EventRequest.enable()
を使用します。ClassPrepareRequest
ClassUnloadRequest createClassUnloadRequest()
ClassUnloadRequest
を作成します。この EventRequestManager が管理するリストに新しいイベント要求が追加されます。このイベント要求を有効にするには、EventRequest.enable()
を使用します。ClassUnloadRequest
ThreadStartRequest createThreadStartRequest()
ThreadStartRequest
を作成します。この EventRequestManager が管理するリストに新しいイベント要求が追加されます。このイベント要求を有効にするには、EventRequest.enable()
を使用します。ThreadStartRequest
ThreadDeathRequest createThreadDeathRequest()
ThreadDeathRequest
を作成します。この EventRequestManager が管理するリストに新しいイベント要求が追加されます。このイベント要求を有効にするには、EventRequest.enable()
を使用します。ThreadDeathRequest
ExceptionRequest createExceptionRequest(ReferenceType refType, boolean notifyCaught, boolean notifyUncaught)
ExceptionRequest
を作成します。この EventRequestManager が管理するリストに新しいイベント要求が追加されます。このイベント要求を有効にするには、EventRequest.enable()
を使用します。
例外イベントとして、特定の例外型およびそのサブクラスを選択できます。キャッチされる例外、キャッチされない例外、または両方を選択できます。ただし、例外がスローされる時点で、その例外が本当にキャッチされるかどうかを判断できるとは限りません。詳細は、ExceptionEvent.catchLocation()
を参照してください。
refType
- null 以外の場合、refType のインスタンスである例外が報告されるように指定する。注:これには、サブ型のインスタンスも含まれる。null の場合、すべてのインスタンスが報告されるnotifyCaught
- true の場合、キャッチされた例外が報告される。notifyUncaught
- true の場合、キャッチされない例外が報告される。ExceptionRequest
MethodEntryRequest createMethodEntryRequest()
MethodEntryRequest
を作成します。この EventRequestManager が管理するリストに新しいイベント要求が追加されます。このイベント要求を有効にするには、EventRequest.enable()
を使用します。MethodEntryRequest
MethodExitRequest createMethodExitRequest()
MethodExitRequest
を作成します。この EventRequestManager が管理するリストに新しいイベント要求が追加されます。このイベント要求を有効にするには、EventRequest.enable()
を使用します。MethodExitRequest
MonitorContendedEnterRequest createMonitorContendedEnterRequest()
MonitorContendedEnterRequest
を作成します。この EventRequestManager が管理するリストに新しいイベント要求が追加されます。このイベント要求を有効にするには、EventRequest.enable()
を使用します。
この操作は、ターゲット仮想マシンでサポートされていないことがあります。この操作がサポートされているかどうかを確認するには、VirtualMachine.canRequestMonitorEvents()
を使用します。MonitorContendedEnterRequest
UnsupportedOperationException
- ターゲット VM でこの操作がサポートされていない場合。MonitorContendedEnteredRequest createMonitorContendedEnteredRequest()
MonitorContendedEnteredRequest
を作成します。この EventRequestManager が管理するリストに新しいイベント要求が追加されます。このイベント要求を有効にするには、EventRequest.enable()
を使用します。
この操作は、ターゲット仮想マシンでサポートされていないことがあります。この操作がサポートされているかどうかを確認するには、VirtualMachine.canRequestMonitorEvents()
を使用します。MonitorContendedEnteredRequest
UnsupportedOperationException
- ターゲット VM でこの操作がサポートされていない場合。MonitorWaitRequest createMonitorWaitRequest()
MonitorWaitRequest
を作成します。この EventRequestManager が管理するリストに新しいイベント要求が追加されます。このイベント要求を有効にするには、EventRequest.enable()
を使用します。
この操作は、ターゲット仮想マシンでサポートされていないことがあります。この操作がサポートされているかどうかを確認するには、VirtualMachine.canRequestMonitorEvents()
を使用します。MonitorWaitRequest
UnsupportedOperationException
- ターゲット VM でこの操作がサポートされていない場合。MonitorWaitedRequest createMonitorWaitedRequest()
MonitorWaitedRequest
を作成します。この EventRequestManager が管理するリストに新しいイベント要求が追加されます。このイベント要求を有効にするには、EventRequest.enable()
を使用します。
この操作は、ターゲット仮想マシンでサポートされていないことがあります。この操作がサポートされているかどうかを確認するには、VirtualMachine.canRequestMonitorEvents()
を使用します。MonitorWaitedRequest
UnsupportedOperationException
- ターゲット VM でこの操作がサポートされていない場合。StepRequest createStepRequest(ThreadReference thread, int size, int depth)
StepRequest
を作成します。この EventRequestManager が管理するリストに新しいイベント要求が追加されます。このイベント要求を有効にするには、EventRequest.enable()
を使用します。
返される要求は、指定された thread
へのステップ実行だけを制御します。ほかのすべてのスレッドは、影響を受けません。StepRequest.STEP_MIN
の size
値は、コードインデックスが変更されるたびにステップイベントを生成します。これは、利用可能な最小のステップサイズを表し、多くの場合、命令レベルにマップします。StepRequest.STEP_LINE
の size
値は、ソース行が変わるたびにステップイベントを生成します (行番号情報を入手できる場合)。行番号情報を利入手できない場合は、STEP_MIN が代わりに実行されます。たとえば、VirtualMachine.redefineClasses(java.util.Map<? extends com.sun.jdi.ReferenceType, byte[]>)
操作によって廃止されたメソッドが実行されているとき、行番号情報は入手できません。StepRequest.STEP_INTO
の depth
値は、呼び出されたすべてのメソッドでステップイベントを生成します。StepRequest.STEP_OVER
の depth
値は、ステップイベントを現在のフレームまたは呼び出し側のフレームに制限します。StepRequest.STEP_OUT
の depth
値は、ステップイベントを呼び出し側のフレームだけに制限します。すべての深さ制限は、ステップが実行される直前の呼び出しスタックに対する相対的なものです。
保留中ステップ要求は、スレッドごとに 1 つだけ許可されます。
一般的なデバッガは、最初のステップの検出後にステップ実行を取り消そうとします。このため、次行のメソッドは、次のようになります。
EventRequestManager mgr = myVM.
eventRequestManager
();
StepRequest request = mgr.createStepRequest(myThread,
StepRequest.STEP_LINE
,
StepRequest.STEP_OVER
);
request.addCountFilter
(1); // next step only
request.enable();
myVM.resume
();
thread
- ステップ実行を行うスレッドdepth
- ステップの深さsize
- ステップサイズStepRequest
DuplicateRequestException
- 指定されたスレッドに保留中ステップ要求がすでに存在する場合。IllegalArgumentException
size 引数または depth 引数に無効な値が含まれている場合。BreakpointRequest createBreakpointRequest(Location location)
BreakpointRequest
を作成します。指定された Location
には、有効な (負でない) コードインデックスが必要です。この EventRequestManager が管理するリストに、新しいブレークポイントが追加されます。1 つの場所に複数のブレークポイントを設定可能です。このイベント要求を有効にするには、EventRequest.enable()
を使用します。location
- 新しいブレークポイントの位置。BreakpointRequest
NativeMethodException
- 位置がネイティブメソッド内の場合。AccessWatchpointRequest createAccessWatchpointRequest(Field field)
EventRequest.enable()
を使用します。
この操作は、ターゲット仮想マシンでサポートされていないことがあります。この操作がサポートされているかどうかを確認するには、VirtualMachine.canWatchFieldAccess()
を使用します。
field
- 監視するフィールドUnsupportedOperationException
- ターゲット仮想マシンがこの操作をサポートしていない場合。ModificationWatchpointRequest createModificationWatchpointRequest(Field field)
EventRequest.enable()
を使用します。
この操作は、ターゲット仮想マシンでサポートされていないことがあります。この操作がサポートされているかどうかを確認するには、VirtualMachine.canWatchFieldModification()
を使用します。
field
- 監視するフィールドUnsupportedOperationException
- ターゲット仮想マシンがこの操作をサポートしていない場合。VMDeathRequest createVMDeathRequest()
VMDeathRequest
を作成します。この EventRequestManager が管理するリストに、新しい要求が追加されます。このイベント要求を有効にするには、EventRequest.enable()
を使用します。
この要求は (有効な場合)、ターゲット VM の終了時に VMDeathEvent
が送信されるようにします。
VMDeathRequest と中断ポリシー SUSPEND_ALL
を一緒に使用することで、VM 停止前に着信する SUSPEND_NONE
または SUSPEND_EVENT_THREAD
イベントを確実に処理できます。すべてのイベント処理が、イベントセットが読み込まれるスレッドと同じスレッドで行われている場合、VMDeathEvent
を含む EventSet
が再開されるまで VM が中断されるので、必要なのは要求を有効にすることだけです。
この操作は、ターゲット仮想マシンでサポートされていないことがあります。この操作がサポートされているかどうかを確認するには、VirtualMachine.canRequestVMDeathEvent()
を使用します。
UnsupportedOperationException
- ターゲット VM でこの操作がサポートされていない場合。void deleteEventRequest(EventRequest eventRequest)
EventRequest.setEnabled(boolean)
などの操作は一切実行できなくなります。実行しようとすると、通常、InvalidRequestStateException
がスローされます。なお、このメソッドは、その他の eventRequest には影響を与えません。
このメソッドは基になるイベント要求リストを変更するため、要求アクセサを使って取得したリストから直接削除しようとすると、エラーが発生します。次に例を示します。
Iterator iter = requestManager.stepRequests().iterator(); while (iter.hasNext()) { requestManager.deleteEventRequest(iter.next()); }
ConcurrentModificationException
が発生することがあります。代わりに、deleteEventRequests(List)
を使用するか、反復前にリストをコピーしてください。eventRequest
- 削除する eventRequestvoid deleteEventRequests(List<? extends EventRequest> eventRequests)
EventRequest
のリストを削除します。eventRequests
- 削除する eventRequest のリストdeleteEventRequest(EventRequest)
void deleteAllBreakpoints()
List<StepRequest> stepRequests()
StepRequest
オブジェクト。List<ClassPrepareRequest> classPrepareRequests()
ClassPrepareRequest
オブジェクト。List<ClassUnloadRequest> classUnloadRequests()
ClassUnloadRequest
オブジェクト。List<ThreadStartRequest> threadStartRequests()
ThreadStartRequest
オブジェクト。List<ThreadDeathRequest> threadDeathRequests()
ThreadDeathRequest
オブジェクト。List<ExceptionRequest> exceptionRequests()
ExceptionRequest
オブジェクト。List<BreakpointRequest> breakpointRequests()
BreakpointRequest
オブジェクトのリスト。List<AccessWatchpointRequest> accessWatchpointRequests()
AccessWatchpointRequest
オブジェクト。List<ModificationWatchpointRequest> modificationWatchpointRequests()
ModificationWatchpointRequest
オブジェクト。List<MethodEntryRequest> methodEntryRequests()
MethodEntryRequest
オブジェクトのリスト。List<MethodExitRequest> methodExitRequests()
MethodExitRequest
オブジェクトのリスト。List<MonitorContendedEnterRequest> monitorContendedEnterRequests()
MonitorContendedEnterRequest
オブジェクトのリスト。List<MonitorContendedEnteredRequest> monitorContendedEnteredRequests()
MonitorContendedEnteredRequest
オブジェクトのリスト。List<MonitorWaitRequest> monitorWaitRequests()
MonitorWaitRequest
オブジェクトのリスト。List<MonitorWaitedRequest> monitorWaitedRequests()
MonitorWaitedRequest
オブジェクトのリスト。List<VMDeathRequest> vmDeathRequests()
VMDeathRequest
オブジェクトのリスト。
Copyright © 1999, 2013, Oracle and/or its affiliates. All rights reserved.