web-dev-qa-db-ja.com

デバッガー評価内で発生したため、ブレークポイントをスキップしました-Intellij IDEA

プロジェクトの任意のメソッドのエグゼクティブラインでブレークポイントを選択しようとして、このメソッドをたとえば4回呼び出す必要があることがわかっている場合、Intellijはこのブレークポイントを3回スキップし、最後の呼び出しでのみ停止します。メソッドの例(エンドポイントクラス):

    @PayloadRoot(localPart = "getRelatedCIs", namespace = "http://www.projectname.com/ws")
public GetRelatedCIsResponse getRelatedCIs(GetRelatedCIs request) throws DataAccessException, WebServiceException {
    GetRelatedCIsResponse response = new GetRelatedCIsResponse();
    PageData page = request.getPageData();
    List<ConfigItemReference> ciRefs = translateCiRefList(request.getCiRef());
    RelatedCiResult relatedCis = configItemService.getRelatedCis(ciRefs, request.getRequestedType(),
            new Page(page.getPageNumber(), page.getPageSize(), page.getTotal()), request.getSort());
    response.getCis().addAll(relatedCis.getCis());
    page.setTotal(relatedCis.getPageInfo().getTotal());
    page.setPageSize(relatedCis.getPageInfo().getPageSize());
    response.setPageData(page);
    System.out.println("****************************INVOCATION***************************" + request.getRequestedType());
    return response;
}

メソッドの最初の行でブレークポイントが選択されます。プログラムが停止すると、コンソールにはすでに3行******************************* INVOCATION ********が印刷されています。 *******************

画面の左下に緑色の通知が表示されます:

デバッガ評価内で発生したため、%code reference%でブレークポイントをスキップしました

ただし、デバッグを実行するときは、式の評価機能を使用しません。また、実行/デバッグ構成のVMオプション:

-XX:MaxPermSize=512m 
-Xms256m 
-Xmx1024m 
-Dcom.Sun.management.jmxremote=true 
-Dcom.Sun.management.jmxremote.port=9004 
-Dcom.Sun.management.jmxremote.authenticate=false 
-Dcom.Sun.management.jmxremote.ssl=false
18

この問題は IDEA-43728 および breakpoints documentation で説明されています。

要するに、それを回避するために、サスペンドスレッド(すべてではない)ブレークポイントポリシーを使用します。

26
Egor