|
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() を使用します。
ClassPrepareRequestClassUnloadRequest createClassUnloadRequest()
ClassUnloadRequest を作成します。この EventRequestManager が管理するリストに新しいイベント要求が追加されます。このイベント要求を有効にするには、EventRequest.enable() を使用します。
ClassUnloadRequestThreadStartRequest createThreadStartRequest()
ThreadStartRequest を作成します。この EventRequestManager が管理するリストに、新しいイベント要求が追加されます。このイベント要求を有効にするには EventRequest.enable() を使用します。
ThreadStartRequestThreadDeathRequest 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 の場合、キャッチされない例外がレポートされる
ExceptionRequestMethodEntryRequest createMethodEntryRequest()
MethodEntryRequest を作成します。この EventRequestManager が管理するリストに、新しいイベント要求が追加されます。このイベント要求を有効にするには EventRequest.enable() を使用します。
MethodEntryRequestMethodExitRequest 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 | ||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | ||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | ||||||||