Java Debug Interface

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

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

public interface EventRequest
extends Mirror

イベントの通知要求を表します。たとえば、BreakpointRequestExceptionRequest などの要求があります。有効な要求が存在するイベントが発生すると、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()
          {@link #setEnabled 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

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

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

SUSPEND_EVENT_THREAD

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

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

SUSPEND_ALL

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

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

isEnabled

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

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

setEnabled

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

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

enable

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

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

disable

void disable()
{@link #setEnabled setEnabled(false) と同様です。

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

addCountFilter

void addCountFilter(int count)
要求されたイベントのレポートを、指定された回数だけ発生した後、最高 1 回に制限する。このフィルタが最初に count - 1 回に達する時点までは、イベントはレポートされない。1 回かぎりのイベントを要求するには、このメソッドをカウント 1 で呼び出します。

カウントが 0 に達したあとは、この要求内の続くフィルタが適用される。それらのフィルタがいずれもイベントを抑制しない場合、そのイベントはレポートされる。そうでない場合、イベントはレポートされない。どちらの場合にも、この要求に対して、それ以降のイベントがレポートされることはない。

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

setSuspendPolicy

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

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

パラメータ:
policy - 選択された中断ポリシー。
例外:
InvalidRequestStateException - この要求が現在有効になっている場合、または削除されている場合。 中断ポリシーは無効な要求にだけ設定できる。
IllegalArgumentException - policy 引数に無効な値が含まれている場合。

suspendPolicy

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

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

putProperty

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

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

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

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

getProperty

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

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

Java Debug Interface