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)
          指定されたフィールドへのアクセスを監視する新しい無効なウォッチポイントを作成します。
 MonitorContendedEnteredRequest createMonitorContendedEnteredRequest()
          新しい無効な MonitorContendedEnteredRequest を作成します。
 MonitorContendedEnterRequest createMonitorContendedEnterRequest()
          新しい無効な MonitorContendedEnterRequest を作成します。
 MonitorWaitedRequest createMonitorWaitedRequest()
          新しい無効な MonitorWaitedRequest を作成します。
 MonitorWaitRequest createMonitorWaitRequest()
          新しい無効な MonitorWaitRequest を作成します。
 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<MonitorContendedEnteredRequest> monitorContendedEnteredRequests()
          有効な monitor contended entered 要求と無効な monitor contended entered 要求から構成される変更不可能なリストを返します。
 List<MonitorContendedEnterRequest> monitorContendedEnterRequests()
          有効な競合モニター開始要求と無効な競合モニター開始要求から構成される変更不可能なリストを返します。
 List<MonitorWaitedRequest> monitorWaitedRequests()
          有効なモニター待機終了要求および無効なモニター待機終了要求から成る変更不可能なリストを返します。
 List<MonitorWaitRequest> monitorWaitRequests()
          有効なモニター待機要求および無効なモニター待機要求から構成される変更不可能なリストを返します。
 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

createMonitorContendedEnterRequest

MonitorContendedEnterRequest createMonitorContendedEnterRequest()
新しい無効な MonitorContendedEnterRequest を作成します。この EventRequestManager が管理するリストに新しいイベント要求が追加されます。このイベント要求を有効にするには、EventRequest.enable() を使用します。 この操作は、ターゲット仮想マシンでサポートされていないことがあります。この操作がサポートされているかどうかを確認するには、VirtualMachine.canRequestMonitorEvents() を使用します。

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

createMonitorContendedEnteredRequest

MonitorContendedEnteredRequest createMonitorContendedEnteredRequest()
新しい無効な MonitorContendedEnteredRequest を作成します。この EventRequestManager が管理するリストに新しいイベント要求が追加されます。このイベント要求を有効にするには、EventRequest.enable() を使用します。 この操作は、ターゲット仮想マシンでサポートされていないことがあります。この操作がサポートされているかどうかを確認するには、VirtualMachine.canRequestMonitorEvents() を使用します。

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

createMonitorWaitRequest

MonitorWaitRequest createMonitorWaitRequest()
新しい無効な MonitorWaitRequest を作成します。この EventRequestManager が管理するリストに新しいイベント要求が追加されます。このイベント要求を有効にするには、EventRequest.enable() を使用します。 この操作は、ターゲット仮想マシンでサポートされていないことがあります。この操作がサポートされているかどうかを確認するには、VirtualMachine.canRequestMonitorEvents() を使用します。

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

createMonitorWaitedRequest

MonitorWaitedRequest createMonitorWaitedRequest()
新しい無効な MonitorWaitedRequest を作成します。この EventRequestManager が管理するリストに新しいイベント要求が追加されます。このイベント要求を有効にするには、EventRequest.enable() を使用します。 この操作は、ターゲット仮想マシンでサポートされていないことがあります。この操作がサポートされているかどうかを確認するには、VirtualMachine.canRequestMonitorEvents() を使用します。

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

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 - size 引数または depth 引数に無効な値が含まれている場合。

createBreakpointRequest

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

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

createAccessWatchpointRequest

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

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

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

createModificationWatchpointRequest

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

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

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

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

monitorContendedEnterRequests

List<MonitorContendedEnterRequest> monitorContendedEnterRequests()
有効な競合モニター開始要求と無効な競合モニター開始要求から構成される変更不可能なリストを返します。このリストはこれらの要求のライブビューであり、要求が追加または削除されると、その変更が即時に反映されます。

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

monitorContendedEnteredRequests

List<MonitorContendedEnteredRequest> monitorContendedEnteredRequests()
有効な monitor contended entered 要求と無効な monitor contended entered 要求から構成される変更不可能なリストを返します。このリストはこれらの要求のライブビューであり、要求が追加または削除されると、その変更が即時に反映されます。

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

monitorWaitRequests

List<MonitorWaitRequest> monitorWaitRequests()
有効なモニター待機要求および無効なモニター待機要求から構成される変更不可能なリストを返します。このリストはこれらの要求のライブビューであり、要求が追加または削除されると、その変更が即時に反映されます。

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

monitorWaitedRequests

List<MonitorWaitedRequest> monitorWaitedRequests()
有効なモニター待機終了要求および無効なモニター待機終了要求から成る変更不可能なリストを返します。このリストはこれらの要求のライブビューであり、要求が追加または削除されると、その変更が即時に反映されます。

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

vmDeathRequests

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

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

Java Debug Interface