Java Debug Interface

com.sun.jdi.request
インタフェース EventRequestManager

すべてのスーパーインタフェース:
Mirror

public interface EventRequestManager
extends Mirror

EventRequest の作成および削除を管理します。このインタフェースの単一の実装が、特定の VM 内に存在し、VirtualMachine.eventRequestManager() を介してアクセスが行われます。

導入されたバージョン:
1.3
関連項目:
EventRequest, Event, BreakpointRequest, BreakpointEvent, VirtualMachine

メソッドの概要
 List<AccessWatchpointRequest> accessWatchpointRequests()
          有効および無効なアクセスウォッチポイント要求の、変更不可能なリストを返します。
 List<BreakpointRequest> breakpointRequests()
          有効および無効なブレークポイント要求の、変更不可能なリストを返します。
 List<ClassPrepareRequest> classPrepareRequests()
          有効および無効なクラス準備要求の、変更不可能なリストを返します。
 List<ClassUnloadRequest> classUnloadRequests()
          有効および無効なクラスアンロード要求の、変更不可能なリストを返します。
 AccessWatchpointRequest createAccessWatchpointRequest(Field field)
          指定されたフィールドへのアクセスを監視する新しい無効なウォッチポイントを作成します。
 BreakpointRequest createBreakpointRequest(Location location)
          新しい無効な BreakpointRequest を作成します。
 ClassPrepareRequest createClassPrepareRequest()
          新しい無効な ClassPrepareRequest を作成します。
 ClassUnloadRequest createClassUnloadRequest()
          新しい無効な ClassUnloadRequest を作成します。
 ExceptionRequest createExceptionRequest(ReferenceType refType, boolean notifyCaught, boolean notifyUncaught)
          新しい無効な ExceptionRequest を作成します。
 MethodEntryRequest createMethodEntryRequest()
          新しい無効な MethodEntryRequest を作成します。
 MethodExitRequest createMethodExitRequest()
          新しい無効な MethodExitRequest を作成します。
 ModificationWatchpointRequest createModificationWatchpointRequest(Field field)
          指定されたフィールドへのアクセスを監視する新しい無効なウォッチポイントを作成します。
 StepRequest createStepRequest(ThreadReference thread, int size, int depth)
          新しい無効な StepRequest を作成します。
 ThreadDeathRequest createThreadDeathRequest()
          新しい無効な ThreadDeathRequest を作成します。
 ThreadStartRequest createThreadStartRequest()
          新しい無効な ThreadStartRequest を作成します。
 VMDeathRequest createVMDeathRequest()
          新しい無効な VMDeathRequest を作成します。
 void deleteAllBreakpoints()
          この EventRequestManager が管理するすべてのブレークポイントを削除します。
 void deleteEventRequest(EventRequest eventRequest)
          特定の eventRequest を削除します。
 void deleteEventRequests(List<? extends EventRequest> eventRequests)
          EventRequest のリストを削除します。
 List<ExceptionRequest> exceptionRequests()
          有効および無効な例外要求の、変更不可能なリストを返します。
 List<MethodEntryRequest> methodEntryRequests()
          有効および無効なメソッド開始要求の、変更不可能なリストを返します。
 List<MethodExitRequest> methodExitRequests()
          有効および無効なメソッド終了要求の、変更不可能なリストを返します。
 List<ModificationWatchpointRequest> modificationWatchpointRequests()
          有効および無効な変更ウォッチポイント要求の、変更不可能なリストを返します。
 List<StepRequest> stepRequests()
          有効および無効なステップ要求の、変更不可能なリストを返します。
 List<ThreadDeathRequest> threadDeathRequests()
          有効および無効なスレッド終了要求の、変更不可能なリストを返します。
 List<ThreadStartRequest> threadStartRequests()
          有効および無効なスレッド開始要求の、変更不可能なリストを返します。
 List<VMDeathRequest> vmDeathRequests()
          有効および無効な VM 終了要求の、変更不可能なリストを返します。
 
インタフェース com.sun.jdi.Mirror から継承されたメソッド
toString, virtualMachine
 

メソッドの詳細

createClassPrepareRequest

ClassPrepareRequest createClassPrepareRequest()
新しい無効な ClassPrepareRequest を作成します。この EventRequestManager が管理するリストに新しいイベント要求が追加されます。このイベント要求を有効にするには、EventRequest.enable() を使用します。

戻り値:
作成された ClassPrepareRequest

createClassUnloadRequest

ClassUnloadRequest createClassUnloadRequest()
新しい無効な ClassUnloadRequest を作成します。この EventRequestManager が管理するリストに新しいイベント要求が追加されます。このイベント要求を有効にするには、EventRequest.enable() を使用します。

戻り値:
作成された ClassUnloadRequest

createThreadStartRequest

ThreadStartRequest createThreadStartRequest()
新しい無効な ThreadStartRequest を作成します。この EventRequestManager が管理するリストに、新しいイベント要求が追加されます。このイベント要求を有効にするには EventRequest.enable() を使用します。

戻り値:
作成された ThreadStartRequest

createThreadDeathRequest

ThreadDeathRequest createThreadDeathRequest()
新しい無効な ThreadDeathRequest を作成します。この EventRequestManager が管理するリストに、新しいイベント要求が追加されます。このイベント要求を有効にするには EventRequest.enable() を使用します。

戻り値:
作成された ThreadDeathRequest

createExceptionRequest

ExceptionRequest createExceptionRequest(ReferenceType refType,
                                        boolean notifyCaught,
                                        boolean notifyUncaught)
新しい無効な ExceptionRequest を作成します。この EventRequestManager が管理するリストに新しいイベント要求が追加されます。このイベント要求を有効にするには、EventRequest.enable() を使用します。

例外イベントとして、特定の例外型およびそのサブクラスを選択できます。キャッチされる例外、キャッチされない例外、または両方を選択できます。ただし、例外がスローされる時点で、その例外が本当にキャッチされるかどうかを判断できるとは限りません。詳細は、ExceptionEvent.catchLocation() を参照してください。

パラメータ:
refType - null 以外の場合、refType のインスタンスである例外がレポートされるように指定する。注: これには、サブタイプのインスタンスも含まれる。null の場合、すべてのインスタンスがレポートされる
notifyCaught - true の場合、キャッチされた例外がレポートされる
notifyUncaught - true の場合、キャッチされない例外がレポートされる
戻り値:
作成された ExceptionRequest

createMethodEntryRequest

MethodEntryRequest createMethodEntryRequest()
新しい無効な MethodEntryRequest を作成します。この EventRequestManager が管理するリストに、新しいイベント要求が追加されます。このイベント要求を有効にするには EventRequest.enable() を使用します。

戻り値:
作成された MethodEntryRequest

createMethodExitRequest

MethodExitRequest createMethodExitRequest()
新しい無効な MethodExitRequest を作成します。この EventRequestManager が管理するリストに、新しいイベント要求が追加されます。このイベント要求を有効にするには EventRequest.enable() を使用します。

戻り値:
作成された MethodExitRequest

createStepRequest

StepRequest createStepRequest(ThreadReference thread,
                              int size,
                              int depth)
新しい無効な StepRequest を作成します。この EventRequestManager が管理するリストに新しいイベント要求が追加されます。このイベント要求を有効にするには、EventRequest.enable() を使用します。

返される要求は、指定された thread へのステップ実行だけを制御します。ほかのすべてのスレッドは、影響を受けません。コードインデックスが変更されるたびに、StepRequest.STEP_MINsize 値がステップイベントを生成します。size 値は、利用可能な最小のステップサイズを表し、多くの場合、命令レベルにマップします。ソース行が変更されるたびに、行番号の情報が利用できるかぎり、StepRequest.STEP_LINEsize 値がステップイベントを生成します。行番号の情報が利用できなくなると、代わりに STEP_MIN が使用されます。たとえば、VirtualMachine.redefineClasses(java.util.Map) 操作によって使用できなくなったメソッドを実行した場合、行番号情報は利用できません。StepRequest.STEP_INTOdepth 値は、呼び出されたすべてのメソッドでステップイベントを生成します。StepRequest.STEP_OVERdepth 値は、ステップイベントを現在のフレームまたは呼び出し側のフレームに制限します。StepRequest.STEP_OUTdepth 値は、ステップイベントを呼び出し側のフレームだけに制限します。すべての深さ制限は、ステップが実行される直前の呼び出しスタックに対する相対的なものです。

スレッドごとに、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 - サイズの引数または深さの引数に不正な値がある場合

createBreakpointRequest

BreakpointRequest createBreakpointRequest(Location location)
新しい無効な BreakpointRequest を作成します。指定された Locationは、有効な (つまり、負ではない) コードインデックスを保持する必要があります。この EventRequestManager が管理するリストに、新しいブレークポイントが追加されます。1 つの場所に複数のブレークポイントを設定可能です。このイベント要求を有効にするには、EventRequest.enable() を使用します。

パラメータ:
location - 新規ブレークポイントの位置
戻り値:
作成された BreakpointRequest
例外:
NativeMethodException - 位置が native メソッド内の場合

createAccessWatchpointRequest

AccessWatchpointRequest createAccessWatchpointRequest(Field field)
指定されたフィールドへのアクセスを監視する新しい無効なウォッチポイントを作成します。この EventRequestManager が管理するリストに、新しいウォッチポイントが追加されます。1 つのフィールドに複数のウォッチポイントを設定可能です。このイベント要求を有効にするには、EventRequest.enable() を使用します。

この操作は、ターゲット仮想マシンでサポートされていないことがあります。この操作がサポートされているかどうかを確認するには、VirtualMachine.canWatchFieldAccess() を使用してください。

パラメータ:
field - 監視するフィールド
戻り値:
作成されたウォッチポイント
例外:
UnsupportedOperationException - ターゲット仮想マシンがこの操作をサポートしていない場合

createModificationWatchpointRequest

ModificationWatchpointRequest createModificationWatchpointRequest(Field field)
指定されたフィールドへのアクセスを監視する新しい無効なウォッチポイントを作成します。この EventRequestManager が管理するリストに、新しいウォッチポイントが追加されます。1 つのフィールドに複数のウォッチポイントを設定可能です。このイベント要求を有効にするには、EventRequest.enable() を使用します。

この操作は、ターゲット仮想マシンでサポートされていないことがあります。この操作がサポートされているかどうかを確認するには、VirtualMachine.canWatchFieldModification() を使用してください。

パラメータ:
field - 監視するフィールド
戻り値:
作成されたウォッチポイント
例外:
UnsupportedOperationException - ターゲット仮想マシンがこの操作をサポートしていない場合

createVMDeathRequest

VMDeathRequest createVMDeathRequest()
新しい無効な VMDeathRequest を作成します。この EventRequestManager が管理するリストに、新しい要求が追加されます。このイベント要求を有効にするには、EventRequest.enable() を使用します。

この要求は (有効な場合)、ターゲット VM の終了時に VMDeathEvent が送信されるようにします。

SUSPEND_ALL の中断ポリシーが設定された VMDeathRequest を使用して、VM 終了前の受信 SUSPEND_NONE または SUSPEND_EVENT_THREAD イベントの処理を確実にできます。イベントセットが読み込まれるスレッドと同じスレッド内ですべてのイベント処理が行われている場合、VMDeathEvent を含む EventSet が再開されるまで VM が中断されているため、要求を有効にする必要があります。

この操作は、ターゲット仮想マシンでサポートされていないことがあります。この操作がサポートされているかどうかを確認するには、VirtualMachine.canRequestVMDeathEvent() を使用してください。

戻り値:
作成された要求
例外:
UnsupportedOperationException - ターゲット VM でこの操作がサポートされていない場合
導入されたバージョン:
1.4

deleteEventRequest

void deleteEventRequest(EventRequest eventRequest)
特定の eventRequest を削除します。指定された eventRequest は無効化され、この EventRequestManager が管理する要求リストから削除されます。削除された eventRequest に対しては、EventRequest.setEnabled(boolean) などの操作を一切実行できなくなります。操作を実行しようとすると、通常は InvalidRequestStateException がスローされます。なお、このメソッドは、その他の eventRequest には影響を与えません。

このメソッドは管理対象のイベント要求リストを変更するため、要求アクセス用メソッドを使って取得したリスト内の要求を直接削除しようとすると、エラーが発生します。以下に例を示します。

 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 - 削除する eventRequest のリスト
関連項目:
deleteEventRequest(EventRequest)

deleteAllBreakpoints

void deleteAllBreakpoints()
この EventRequestManager が管理するすべてのブレークポイントを削除します。

関連項目:
deleteEventRequest(EventRequest)

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 オブジェクトのリスト

vmDeathRequests

List<VMDeathRequest> vmDeathRequests()
有効および無効な VM 終了要求の、変更不可能なリストを返します。このリストはこれらの要求のライブビューであり、要求が追加または削除されると、その変更が即時に反映されます。注: 自発的な VMDeathEvent に対応する要求はありません。

戻り値:
すべての VMDeathRequest オブジェクトのリスト
導入されたバージョン:
1.4

Java Debug Interface