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

时间:2017-05-28 22:47:27

标签: java debugging intellij-idea sbt scalatra

我正在尝试Scala Web框架Scalatra。根据文档here,启用IntelliJ调试的步骤是:

  1. 为远程调试添加常用的JDK选项:"-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005"
  2. 在Intellij中创建“远程”运行配置
  3. 启动sbt,运行jetty:start,然后启动远程调试程序
  4. 当我这样做时,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。

4 个答案:

答案 0 :(得分:4)

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

  

-agentlib:JDWP =运输= dt_socket,服务器= Y,暂停= N,ADDRES S = 5005

您在答案-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005中使用的值在For JDK 1.4.x字段中使用。

答案 1 :(得分:2)

终于,经过艰苦奋斗!我为我找到了它!

我需要在build.sbt中禁用分叉

 fork in Test := false,

这是完全合理的,因为它是第一个可以附加到IDE的JVM。

我希望它可以帮助某人!

答案 2 :(得分: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(I我假设你正在使用xsbt-web-plugin)。

答案 3 :(得分:0)

Scalatra docs 中,第 1 步说更新 build.scala 文件中的 javaOptions。相反,更新 build.sbt 文件为我解决了这个问题。更新正确的文件后,文档中的其余步骤运行良好。

build.sbt

val ScalatraVersion = "2.7.1"

ThisBuild / scalaVersion := "2.13.4"
ThisBuild / organization := "com.example"

lazy val hello = (project in file("."))
  .settings(
    name := "My Scalatra Web App",
    version := "0.1.0-SNAPSHOT",
    libraryDependencies ++= Seq(
      "org.scalatra" %% "scalatra" % ScalatraVersion,
      "org.scalatra" %% "scalatra-scalatest" % ScalatraVersion % "test",
      "ch.qos.logback" % "logback-classic" % "1.2.3" % "runtime",
      "org.eclipse.jetty" % "jetty-webapp" % "9.4.35.v20201120" % "container",
      "javax.servlet" % "javax.servlet-api" % "3.1.0" % "provided"
    ),
    javaOptions ++= Seq(
      "-Xdebug",
      "-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005"
    ),
  )

enablePlugins(SbtTwirl)
enablePlugins(JettyPlugin)