Scala WebフレームワークScalatraを試しています。ドキュメント here によると、IntelliJデバッグを有効にする手順は次のとおりです:
"-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005"
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を使用しています。
これは私がリモートデバッグに使用するものです:
-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
フィールドで使用されます。
-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
)を使用していると想定しています。