web-dev-qa-db-ja.com

IntelliJリモートデバッガーは接続するが、ブレークポイントが機能しない

Scala WebフレームワークScalatraを試しています。ドキュメント here によると、IntelliJデバッグを有効にする手順は次のとおりです:

  1. リモートデバッグ用の通常のJDKオプションを追加します:"-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005"
  2. Intellijで「リモート」実行構成を作成する
  3. sbtを起動し、jetty:startを実行してから、リモートデバッガーを起動します。

これを行うと、SBTは次のように出力します。

Listening for transport dt_socket at address: 5005

そしてIntelliJは次のように出力します:

Connected to the target VM, address: 'localhost:5005', transport: 'socket'

ただし、ブレークポイントが機能していないようです。 *にブレークポイントを設定して、次のエンドポイントにアクセスすると、

class AppServlet extends AppStack {
  get("/break-test") {
*   val response = "DONE"
    response
  }
}

コードはその行で停止しませんが、継続するので、応答DONEが返されます。

私はJava 1.8.0_111、Scala 2.12、およびSBT 0.13.15を使用しています。

9
Joaquim d'Souza

これは私がリモートデバッグに使用するものです:

-agentlib:jdwp = transport = dt_socket、server = y、suspend = n、addres‌ s = 5005。

上記の回答で使用する値-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005は、For JDK 1.4.xフィールドで使用されます。

4

-jvm-debugを使用してSBTを起動すると、そのSBTプロセスにデバッガーが接続され、jetty:startがforkして、新しいプロセスでjettyを実行します。アプリをデバッグできるようにするには、build.sbt(.settings(debugPort in Jetty := 5005))またはInsider SBT repl(set debugPort in Jetty := 5005)で変数debugPortを設定し、jetty:debug(I xsbt-web-plugin)を使用していると想定しています。

0