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 accessWatchpointRequests()
          有効および無効なアクセスウォッチポイント要求の、変更不可能なリストを返します。
 List breakpointRequests()
          有効および無効なブレークポイント要求の、変更不可能なリストを返します。
 List classPrepareRequests()
          有効および無効なクラス準備要求の、変更不可能なリストを返します。
 List 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 eventRequests)
          EventRequest のリストを削除します。
 List exceptionRequests()
          有効および無効な例外要求の、変更不可能なリストを返します。
 List methodEntryRequests()
          有効および無効なメソッド開始要求の、変更不可能なリストを返します。
 List methodExitRequests()
          有効および無効なメソッド終了要求の、変更不可能なリストを返します。
 List modificationWatchpointRequests()
          有効および無効な変更ウォッチポイント要求の、変更不可能なリストを返します。
 List stepRequests()
          有効および無効なステップ要求の、変更不可能なリストを返します。
 List threadDeathRequests()
          有効および無効なスレッド終了要求の、変更不可能なリストを返します。
 List threadStartRequests()
          有効および無効なスレッド開始要求の、変更不可能なリストを返します。
 List vmDeathRequests()
          有効および無効な VM 終了要求の、変更不可能なリストを返します。
 
インタフェース com.sun.jdi.Mirror から継承したメソッド
toString, virtualMachine
 

メソッドの詳細

createClassPrepareRequest

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

戻り値:
作成された ClassPrepareRequest

createClassUnloadRequest

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

戻り値:
作成された ClassUnloadRequest

createThreadStartRequest

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

戻り値:
作成された ThreadStartRequest

createThreadDeathRequest

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

戻り値:
作成された ThreadDeathRequest

createExceptionRequest

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

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

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

createMethodEntryRequest

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

戻り値:
作成された MethodEntryRequest

createMethodExitRequest

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

戻り値:
作成された MethodExitRequest

createStepRequest

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

返される要求は、指定された thread へのステップ実行だけを制御します。他のすべてのスレッドは、影響を受けません。コードインデックスが変更されるたびに、StepRequest.STEP_MINsize 値がステップイベントを生成します。size 値は、利用可能な最小のステップサイズを表し、多くの場合命令レベルにマップします。ソース行が変更されるたびに、StepRequest.STEP_LINEsize 値がステップイベントを生成します。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 - 指定されたスレッドに対する保留中のステップ要求が既に存在する場合

createBreakpointRequest

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

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

createAccessWatchpointRequest

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

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

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

createModificationWatchpointRequest

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

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

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

createVMDeathRequest

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

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

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

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

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

deleteEventRequest

public 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

public void deleteEventRequests(List eventRequests)
EventRequest のリストを削除します。

パラメータ:
eventRequests - 削除する eventRequest のリスト
関連項目:
deleteEventRequest(EventRequest)

deleteAllBreakpoints

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

関連項目:
deleteEventRequest(EventRequest)

stepRequests

public List stepRequests()
有効および無効なステップ要求の、変更不可能なリストを返します。このリストはこれらの要求のライブビューであり、要求が追加または削除されると、その変更が即時に反映されます。

戻り値:
すべての StepRequest オブジェクト

classPrepareRequests

public List classPrepareRequests()
有効および無効なクラス準備要求の、変更不可能なリストを返します。このリストはこれらの要求のライブビューであり、要求が追加または削除されると、その変更が即時に反映されます。

戻り値:
すべての ClassPrepareRequest オブジェクト

classUnloadRequests

public List classUnloadRequests()
有効および無効なクラスアンロード要求の、変更不可能なリストを返します。このリストはこれらの要求のライブビューであり、要求が追加または削除されると、その変更が即時に反映されます。

戻り値:
すべての ClassUnloadRequest オブジェクト

threadStartRequests

public List threadStartRequests()
有効および無効なスレッド開始要求の、変更不可能なリストを返します。このリストはこれらの要求のライブビューであり、要求が追加または削除されると、その変更が即時に反映されます。

戻り値:
すべての ThreadStartRequest オブジェクト

threadDeathRequests

public List threadDeathRequests()
有効および無効なスレッド終了要求の、変更不可能なリストを返します。このリストはこれらの要求のライブビューであり、要求が追加または削除されると、その変更が即時に反映されます。

戻り値:
すべての ThreadDeathRequest オブジェクト

exceptionRequests

public List exceptionRequests()
有効および無効な例外要求の、変更不可能なリストを返します。このリストはこれらの要求のライブビューであり、要求が追加または削除されると、その変更が即時に反映されます。

戻り値:
すべての ExceptionRequest オブジェクト

breakpointRequests

public List breakpointRequests()
有効および無効なブレークポイント要求の、変更不可能なリストを返します。このリストはこれらの要求のライブビューであり、要求が追加または削除されると、その変更が即時に反映されます。

戻り値:
すべての BreakpointRequest オブジェクトのリスト

accessWatchpointRequests

public List accessWatchpointRequests()
有効および無効なアクセスウォッチポイント要求の、変更不可能なリストを返します。このリストはこれらの要求のライブビューであり、要求が追加または削除されると、その変更が即時に反映されます。

戻り値:
すべての AccessWatchpointRequest オブジェクト

modificationWatchpointRequests

public List modificationWatchpointRequests()
有効および無効な変更ウォッチポイント要求の、変更不可能なリストを返します。このリストはこれらの要求のライブビューであり、要求が追加または削除されると、その変更が即時に反映されます。

戻り値:
すべての ModificationWatchpointRequest オブジェクト

methodEntryRequests

public List methodEntryRequests()
有効および無効なメソッド開始要求の、変更不可能なリストを返します。このリストはこれらの要求のライブビューであり、要求が追加または削除されると、その変更が即時に反映されます。

戻り値:
すべての MethodEntryRequest オブジェクトのリスト

methodExitRequests

public List methodExitRequests()
有効および無効なメソッド終了要求の、変更不可能なリストを返します。このリストはこれらの要求のライブビューであり、要求が追加または削除されると、その変更が即時に反映されます。

戻り値:
すべての MethodExitRequest オブジェクトのリスト

vmDeathRequests

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

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

Java Debug Interface