【发布时间】: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