Java Debug Interface

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

すべてのスーパーインタフェース:
Mirror
既知のサブインタフェースの一覧:
AccessWatchpointRequest, BreakpointRequest, ClassPrepareRequest, ClassUnloadRequest, ExceptionRequest, MethodEntryRequest, MethodExitRequest, ModificationWatchpointRequest, StepRequest, ThreadDeathRequest, ThreadStartRequest, VMDeathRequest, WatchpointRequest

public interface EventRequest
extends Mirror

イベントの通知要求を表します。例として、BreakpointRequest および ExceptionRequest があります。有効な要求の存在するイベントが発生すると、EventSetEventQueue 上に配置されます。既存のイベント要求のコレクションは、EventRequestManager により管理されます。

イベント要求に対して生成されるイベントの数は、フィルタを使って制御できます。フィルタで、イベントがイベントキューに配置される前に満たさなければならない制限を追加します。ExceptionRequest.addClassFilter(java.lang.String classPattern) のようなフィルタ追加メソッドに複数の呼び出しをすると、複数のフィルタが使用されます。あるイベントが無効に設定されている間、フィルタはそのイベントに対して一度に 1 つだけ追加されます。複数のフィルタは、カットオフとともに、要求に追加された順序で適用されます。すべてのフィルタ条件を満たすイベントだけがイベントキューに配置されます。

利用可能なフィルタは、イベント要求に応じて異なります。フィルタの例を示します。

フィルタは、ターゲット VM からデバッガ VM に送信されるイベントトラフィックの量を低減することにより、デバッガのパフォーマンスを劇的に向上させることができます。

ターゲット VM が切断された場合、EventRequest を引数に取る EventRequest 上の任意のメソッドは、VMDisconnectedException をスローし、VMDisconnectEventEventQueue から読み出せるようになります。

EventRequest を引数に取る EventRequest 上の任意のメソッドは、ターゲット VM がメモリが不足すると VMOutOfMemoryException をスローします。

導入されたバージョン:
1.3
関連項目:
BreakpointEvent, EventQueue, EventRequestManager

フィールドの概要
static int SUSPEND_ALL
          イベントの発生時に、すべてのスレッドを中断します。
static int SUSPEND_EVENT_THREAD
          イベントの発生時に、イベントを生成したスレッドだけを中断します。
static int SUSPEND_NONE
          イベントの発生時に、どのスレッドも中断しません。
 
メソッドの概要
 void addCountFilter(int count)
          要求されたイベントが、指定された回数のイベント発生後に最大 1 回レポートされるように制限します。
 void disable()
          setEnabled(false) と同様です。
 void enable()
          setEnabled(true) と同様です。
 Object getProperty(Object key)
          指定されたキーを持つプロパティの値を返します。
 boolean isEnabled()
          このイベント要求が現在有効かどうかを判定します。
 void putProperty(Object key, Object value)
          この要求に任意のキーと値の「プロパティ」を追加します。
 void setEnabled(boolean val)
          このイベント要求を有効または無効にします。
 void setSuspendPolicy(int policy)
          ターゲット VM 内で要求されたイベントが発生する際に中断するスレッドを判定します。
 int suspendPolicy()
          ターゲット VM 内で要求されたイベントが発生する際に中断するスレッドを規定した値を返します。
 
インタフェース com.sun.jdi.Mirror から継承したメソッド
toString, virtualMachine
 

フィールドの詳細

SUSPEND_NONE

public static final int SUSPEND_NONE
イベントの発生時に、どのスレッドも中断しません。

関連項目:
定数フィールド値

SUSPEND_EVENT_THREAD

public static final int SUSPEND_EVENT_THREAD
イベントの発生時に、イベントを生成したスレッドだけを中断します。

関連項目:
定数フィールド値

SUSPEND_ALL

public static final int SUSPEND_ALL
イベントの発生時に、すべてのスレッドを中断します。

関連項目:
定数フィールド値
メソッドの詳細

isEnabled

public boolean isEnabled()
このイベント要求が現在有効かどうかを判定します。

戻り値:
有効な場合は true、それ以外の場合は false

setEnabled

public void setEnabled(boolean val)
このイベント要求を有効または無効にします。このイベント要求が無効な間、イベント要求は無視され、ターゲット VM のスレッドがこのイベント要求に達した場合にもターゲット VM は停止しません。無効なイベント要求も存在し、EventRequestManager.breakpointRequests() などのイベント要求リスト内に含まれます。

パラメータ:
val - イベント要求を有効にする場合は true、それ以外の場合は false
例外:
InvalidRequestStateException - 要求が削除された場合
IllegalThreadStateException - このイベント要求が StepRequest であり、valtrue が指定され、この要求が指定するスレッドがすでに終了している場合

enable

public void enable()
setEnabled(true) と同様です。

例外:
InvalidRequestStateException - 要求が削除された場合
IllegalThreadStateException - このイベント要求が StepRequest であり、この要求が指定するスレッドがすでに終了している場合

disable

public void disable()
setEnabled(false) と同様です。

例外:
InvalidRequestStateException - 要求が削除された場合

addCountFilter

public void addCountFilter(int count)
要求されたイベントが、指定された回数のイベント発生後に最大 1 回レポートされるように制限します。このフィルタの最初の count - 1 回では、イベントはレポートされません。1 回限りのイベントを要求するには、カウントに 1 を指定してこのメソッドを呼び出します。

カウントが 0 になると、この要求内のその後のフィルタすべてが適用されます。これらのフィルタのどれもイベントを抑制しない場合、イベントがレポートされます。それ以外の場合、イベントはレポートされません。どちらの場合にも、その後のイベントはこの要求に対してレポートされません。

パラメータ:
count - イベントを生成する前の発生回数
例外:
InvalidRequestStateException - この要求が有効な場合、または削除された場合。フィルタは無効な要求にだけ追加できる
IllegalArgumentException - count が 1 回未満の場合

setSuspendPolicy

public void setSuspendPolicy(int policy)
ターゲット VM 内で要求されたイベントが発生する際に中断するスレッドを判定します。ターゲット VM 内のすべてのスレッドを中断する場合は SUSPEND_ALL を使用します (デフォルト)。イベントを生成したスレッドだけを中断する場合は SUSPEND_EVENT_THREAD を使用します。スレッドを中断しない場合は SUSPEND_NONE を使用します。

イベントを介したスレッドの中断は、明示的に要求された中断と同一の機能を保持します。詳細は、ThreadReference.suspend() および VirtualMachine.suspend() を参照してください。

例外:
InvalidRequestStateException - この要求が現在有効な場合、または削除された場合。中断ポリシーは無効な要求にだけ設定できる

suspendPolicy

public int suspendPolicy()
ターゲット VM 内で要求されたイベントが発生する際に中断するスレッドを規定した値を返します。返される値は、SUSPEND_ALLSUSPEND_EVENT_THREAD、または SUSPEND_NONE です。

戻り値:
この要求の現在の中断モード

putProperty

public void putProperty(Object key,
                        Object value)
この要求に任意のキーと値の「プロパティ」を追加します。JDI のクライアントは、アプリケーション情報を要求に関連付けるためにこのプロパティを使用できます。これらのクライアントにより設定されるプロパティは、JDI により内部的に使用されることはありません。

get/putProperty メソッドは、インスタンスごとの小規模なマップへのアクセスを提供します。これを Properties と混同しないでください。

値が null の場合、このメソッドはプロパティを削除します。

関連項目:
getProperty(java.lang.Object)

getProperty

public Object getProperty(Object key)
指定されたキーを持つプロパティの値を返します。putProperty(java.lang.Object, java.lang.Object) を使って追加されたプロパティだけが、null 以外の値を返します。

戻り値:
このプロパティの値または null
関連項目:
putProperty(java.lang.Object, java.lang.Object)

Java Debug Interface