【问题标题】:Remote debug JAR assembled from Scala source code从 Scala 源代码组装的远程调试 JAR
【发布时间】:2017-06-21 08:39:46
【问题描述】:

我正在使用一个用 Scala 编写的 API,它使用 SBT 将其构建到 JAR 文件中。我将 JAR 文件部署到虚拟机 (VM) 上,并且可以成功执行它 - API 启动并处理请求。

现在我正在尝试使用 IntelliJ (v 2016.3.4) 远程调试配置在源 Scala 代码中放置断点。这是我所做的:

1) 在 IntelliJ 中将我的源代码作为 Scala SBT 项目打开。

2) 打开VM 5005端口

3) 在 VM 上执行 JAR:
java -noverify "-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005" -cp /home/vagrant/shared/build/geotrellis-chatta-demo-assembly-0.1-SNAPSHOT.jar geotrellis.chatta.Main

我得到这个输出:
Listening for transport dt_socket at address: 5005

4) 在 IntelliJ 中添加远程调试配置并启动它。 IntelliJ 控制台向我显示:
Connected to the target VM, address: 'localhost:5005', transport: 'socket'

但是,我的断点都不起作用。

我在上述步骤中遗漏了什么吗?我对 Scala 非常陌生,多年来没有认真使用过 Java,并且刚刚开始使用 IntelliJ。

更新:IntelliJ 调试器肯定在工作 - 如果我暂停它,API 会停止响应请求,直到它不再暂停。但没有停止断点。

【问题讨论】:

  • jar 是否包含调试信息?没有行号就不能设置断点。 this post 的答案有一些信息可以解决这个问题。
  • 考虑使用方法断点。
  • 您是否为正在调试的 JAR 指定了源代码附件?在 IntelliJ 中,找到 JAR 并将其与源代码关联
  • @radumanolescu - 就是这样。如果您将您的评论作为答案重新发布,我将很乐意接受。非常感谢
  • @rgwozdz 在下面添加了答案

标签: java scala intellij-idea jar sbt


【解决方案1】:

您是否为正在调试的 JAR 指定了源代码附件?在 IntelliJ 中,找到 JAR 并将其与源代码关联。

【讨论】:

    猜你喜欢
    • 2014-03-16
    • 2020-12-31
    • 2014-08-23
    • 2016-01-22
    • 1970-01-01
    • 1970-01-01
    • 2011-04-04
    • 2011-06-17
    相关资源
    最近更新 更多