Remote debug JAR assembled from Scala source code
我正在使用一个用 Scala 编写的 API,它使用 SBT 将其构建到 JAR 文件中。我将 JAR 文件部署到虚拟机 (VM) 并且可以成功执行它 – API 启动并处理请求。
现在我正在尝试使用 IntelliJ (v 2016.3.4) 远程调试配置在源 Scala 代码中放置断点。这是我所做的:
1) 在 IntelliJ 中将我的源代码作为 Scala SBT 项目打开。
2) 打开虚拟机端口 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 是否包含调试信息?没有行号就不能设置断点。这篇文章的答案有一些信息可以解决这个问题。
- 考虑使用方法断点。
- 您是否为正在调试的 JAR 指定了源代码附件?在 IntelliJ 中,找到 JAR 并将其与源代码关联
- @radumanolescu – 就是这样。如果您将您的评论作为答案重新发布,我将很乐意接受。非常感谢
- @rgwozdz 在下面添加了答案
您是否为正在调试的 JAR 指定了源代码附件?在 IntelliJ 中,找到 JAR 并将其与源代码相关联。
来源:https://www.codenong.com/42033329/