モジュール jdk.jdi
パッケージ com.sun.jdi.request

インタフェースEventRequestManager

    • メソッドの詳細

      • createExceptionRequest

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

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

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

        MethodExitRequest createMethodExitRequest()
        新しい無効なMethodExitRequestを作成します。 このEventRequestManagerが管理するリストに新しいイベント要求が追加されます。 このイベント要求を有効にするには、EventRequest.enable()を使用します。
        戻り値:
        作成されたMethodExitRequest
      • 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 値は、コード・インデックスが変更されるたびにステップ・イベントを生成します。 これは、利用可能な最小のステップ・サイズを表し、多くの場合、命令レベルにマップします。 StepRequest.STEP_LINEsize値は、ソース行が変わるたびにステップ・イベントを生成します(行番号情報を入手できる場合)。行番号情報を利入手できない場合は、STEP_MINが代わりに実行されます。 たとえば、VirtualMachine.redefineClasses(java.util.Map<? extends com.sun.jdi.ReferenceType, byte[]>)操作によって廃止されたメソッドが実行されているとき、行番号情報は入手できません。 StepRequest.STEP_INTOdepth値は、呼び出されたすべてのメソッドでステップ・イベントを生成します。 StepRequest.STEP_OVERdepth値は、ステップ・イベントを現在のフレームまたは呼出し側のフレームに制限します。 StepRequest.STEP_OUTdepth値は、ステップ・イベントを呼出し側のフレームだけに制限します。 すべての深さ制限は、ステップが実行される直前の呼出しスタックに対する相対的なものです。

        保留中ステップ要求は、スレッドごとに1つだけ許可されます。

        一般的なデバッガは、最初のステップの検出後にステップ実行を取り消そうとします。 このため、次行のメソッドは、次のようになります。

        
             EventRequestManager mgr = myVM.{@link VirtualMachine#eventRequestManager eventRequestManager}();
             StepRequest request = mgr.createStepRequest(myThread,
                                                         StepRequest.{@link StepRequest#STEP_LINE STEP_LINE},
                                                         StepRequest.{@link StepRequest#STEP_OVER STEP_OVER});
             request.{@link EventRequest#addCountFilter addCountFilter}(1);  // next step only
             request.enable();
             myVM.{@link VirtualMachine#resume 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 - ターゲット仮想マシンがこの操作をサポートしていない場合。
      • createModificationWatchpointRequest

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

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

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

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

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

        VMDeathRequestと中断ポリシーSUSPEND_ALLを一緒に使用することで、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
      • deleteAllBreakpoints

        void deleteAllBreakpoints()
        このEventRequestManagerが管理するすべてのブレークポイントを削除します。
        関連項目:
        deleteEventRequest(EventRequest)
      • stepRequests

        List<StepRequest> stepRequests()
        有効および無効なstepRequestsの変更不可能なリストを返します。 このリストはこれらの要求のライブ・ビューなので、要求が追加または削除されると変わります。
        戻り値:
        すべてのStepRequestオブジェクト。
      • classPrepareRequests

        List<ClassPrepareRequest> classPrepareRequests()
        有効および無効なclassPrepareRequestsの変更不可能なリストを返します。 このリストはこれらの要求のライブ・ビューなので、要求が追加または削除されると変わります。
        戻り値:
        すべてのClassPrepareRequestオブジェクト。
      • classUnloadRequests

        List<ClassUnloadRequest> classUnloadRequests()
        有効および無効なclassUnloadRequestsの変更不可能なリストを返します。 このリストはこれらの要求のライブ・ビューなので、要求が追加または削除されると変わります。
        戻り値:
        すべてのClassUnloadRequestオブジェクト。
      • threadStartRequests

        List<ThreadStartRequest> threadStartRequests()
        有効および無効なthreadStartRequestsの変更不可能なリストを返します。 このリストはこれらの要求のライブ・ビューなので、要求が追加または削除されると変わります。
        戻り値:
        すべてのThreadStartRequestオブジェクト。
      • threadDeathRequests

        List<ThreadDeathRequest> threadDeathRequests()
        有効および無効なthreadDeathRequestsの変更不可能なリストを返します。 このリストはこれらの要求のライブ・ビューなので、要求が追加または削除されると変わります。
        戻り値:
        すべてのThreadDeathRequestオブジェクト。
      • exceptionRequests

        List<ExceptionRequest> exceptionRequests()
        有効および無効なexceptionRequestsの変更不可能なリストを返します。 このリストはこれらの要求のライブ・ビューなので、要求が追加または削除されると変わります。
        戻り値:
        すべてのExceptionRequestオブジェクト。
      • breakpointRequests

        List<BreakpointRequest> breakpointRequests()
        有効および無効なbreakpointRequestsの変更不可能なリストを返します。 このリストはこれらの要求のライブ・ビューなので、要求が追加または削除されると変わります。
        戻り値:
        すべてのBreakpointRequestオブジェクトのリスト。
      • accessWatchpointRequests

        List<AccessWatchpointRequest> accessWatchpointRequests()
        有効および無効なaccessWatchpointRequestsの変更不可能なリストを返します。 このリストはこれらの要求のライブ・ビューなので、要求が追加または削除されると変わります。
        戻り値:
        すべてのAccessWatchpointRequestオブジェクト。
      • modificationWatchpointRequests

        List<ModificationWatchpointRequest> modificationWatchpointRequests()
        有効および無効なmodificationWatchpointRequestsの変更不可能なリストを返します。 このリストはこれらの要求のライブ・ビューなので、要求が追加または削除されると変わります。
        戻り値:
        すべてのModificationWatchpointRequestオブジェクト。
      • methodEntryRequests

        List<MethodEntryRequest> methodEntryRequests()
        有効および無効なmethodEntryRequestsの変更不可能なリストを返します。 このリストはこれらの要求のライブ・ビューなので、要求が追加または削除されると変わります。
        戻り値:
        すべてのMethodEntryRequestオブジェクトのリスト。
      • methodExitRequests

        List<MethodExitRequest> methodExitRequests()
        有効および無効なmethodExitRequestsの変更不可能なリストを返します。 このリストはこれらの要求のライブ・ビューなので、要求が追加または削除されると変わります。
        戻り値:
        すべてのMethodExitRequestオブジェクトのリスト。
      • monitorContendedEnterRequests

        List<MonitorContendedEnterRequest> monitorContendedEnterRequests()
        有効なおよび無効なmonitorContendedEnterRequestsの変更不可能なリストを返します。 このリストはこれらの要求のライブ・ビューなので、要求が追加または削除されると変わります。
        戻り値:
        すべてのMonitorContendedEnterRequestオブジェクトのリスト。
        導入されたバージョン:
        1.6
      • monitorContendedEnteredRequests

        List<MonitorContendedEnteredRequest> monitorContendedEnteredRequests()
        有効なおよび無効なmonitorContendedEnteredRequestsの変更不可能なリストを返します。 このリストはこれらの要求のライブ・ビューなので、要求が追加または削除されると変わります。
        戻り値:
        すべてのMonitorContendedEnteredRequestオブジェクトのリスト。
        導入されたバージョン:
        1.6
      • monitorWaitRequests

        List<MonitorWaitRequest> monitorWaitRequests()
        有効なおよび無効なmonitorWaitRequestsの変更不可能なリストを返します。 このリストはこれらの要求のライブ・ビューなので、要求が追加または削除されると変わります。
        戻り値:
        すべてのMonitorWaitRequestオブジェクトのリスト。
        導入されたバージョン:
        1.6
      • monitorWaitedRequests

        List<MonitorWaitedRequest> monitorWaitedRequests()
        有効なおよび無効なmonitorWaitedRequestsの変更不可能なリストを返します。 このリストはこれらの要求のライブ・ビューなので、要求が追加または削除されると変わります。
        戻り値:
        すべてのMonitorWaitedRequestオブジェクトのリスト。
        導入されたバージョン:
        1.6
      • vmDeathRequests

        List<VMDeathRequest> vmDeathRequests()
        有効および無効なvmDeathRequestsの変更不可能なリストを返します。 このリストはこれらの要求のライブ・ビューなので、要求が追加または削除されると変わります。 注: 非要請VMDeathEventに対応する要求はありません。
        戻り値:
        すべてのVMDeathRequestオブジェクトのリスト。
        導入されたバージョン:
        1.4