|
Java Debug Interface | ||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
public interface EventRequestManager
EventRequest
の作成および削除を管理します。このインタフェースの単一の実装が、特定の VM 内に存在し、VirtualMachine.eventRequestManager()
を介してアクセスが行われます。
EventRequest
,
Event
,
BreakpointRequest
,
BreakpointEvent
,
VirtualMachine
インタフェース com.sun.jdi.Mirror から継承されたメソッド |
---|
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
StepRequest createStepRequest(ThreadReference thread, int size, int depth)
StepRequest
を作成します。この EventRequestManager が管理するリストに新しいイベント要求が追加されます。このイベント要求を有効にするには、EventRequest.enable()
を使用します。
返される要求は、指定された thread
へのステップ実行だけを制御します。ほかのすべてのスレッドは、影響を受けません。コードインデックスが変更されるたびに、StepRequest.STEP_MIN
の size
値がステップイベントを生成します。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
- サイズの引数または深さの引数に不正な値がある場合BreakpointRequest createBreakpointRequest(Location location)
BreakpointRequest
を作成します。指定された Location
は、有効な (つまり、負ではない) コードインデックスを保持する必要があります。この EventRequestManager が管理するリストに、新しいブレークポイントが追加されます。1 つの場所に複数のブレークポイントを設定可能です。このイベント要求を有効にするには、EventRequest.enable()
を使用します。
location
- 新規ブレークポイントの位置
BreakpointRequest
NativeMethodException
- 位置が native メソッド内の場合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
が送信されるようにします。
SUSPEND_ALL
の中断ポリシーが設定された VMDeathRequest を使用して、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()
deleteEventRequest(EventRequest)
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<VMDeathRequest> vmDeathRequests()
VMDeathRequest
オブジェクトのリスト
|
Java Debug Interface | ||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |