IntelliJ远程调试器连接,但断点不起作用

问题描述 投票:7回答:2

我正在尝试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。

java debugging intellij-idea sbt scalatra
2个回答
4
投票

这是我用于远程调试的内容:

-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字段中使用。


0
投票

当您使用-jvm-debug启动SBT时,您将调试器附加到该SBT进程,jetty:start将在新进程中fork并运行jetty。为了能够调试您的应用程序,您必须在build.sbt(.settings(debugPort in Jetty := 5005)或内部SBT repl(set debugPort in Jetty := 5005)中设置var debugPort,然后使用jetty:debug启动jetty(我假设您使用的是xsbt-web-plugin)。

© www.soinside.com 2019 - 2024. All rights reserved.