Mic*_*ael 6 java debugging jvm scala intellij-idea
我正在尝试远程调试scala项目.无论是执行程序(内置和SBT执行)和我的调试器(的IntelliJ)是局部的,但因为我不希望使用的IntelliJ,使用远程调试会话建立似乎为调试方便最简单的选择.
该程序以以下选项启动:
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005
Run Code Online (Sandbox Code Playgroud)
它在发布时成功挂起,我可以成功连接我的调试器.我可以设置断点并逐步执行代码,但问题是未捕获的异常会终止调试会话并断开调试器的连接,从而无法调试.这是默认行为是asburd,所以我必须做错事.
Intellij的控制台显示:
Connected to the target VM, address: 'localhost:5005', transport: 'socket'
Disconnected from the target VM, address: 'localhost:5005', transport: 'socket'
Run Code Online (Sandbox Code Playgroud)
在执行或调试方面,我是否缺少某些东西?
编辑:添加一个堆栈跟踪,我在我的主类中抛出新的异常("what"):
[error] java.lang.Exception: what
[error] at travellr.application.prophet.Prophet$.main(Prophet.scala:80)
[error] at travellr.application.prophet.Prophet.main(Prophet.scala)
[error] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[error] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
[error] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[error] at java.lang.reflect.Method.invoke(Method.java:597)
[error] at scala.tools.nsc.util.ScalaClassLoader$$anonfun$run$1.apply(ScalaClassLoader.scala:81)
[error] at scala.tools.nsc.util.ScalaClassLoader$class.asContext(ScalaClassLoader.scala:24)
[error] at scala.tools.nsc.util.ScalaClassLoader$URLClassLoader.asContext(ScalaClassLoader.scala:86)
[error] at scala.tools.nsc.util.ScalaClassLoader$class.run(ScalaClassLoader.scala:81)
[error] at scala.tools.nsc.util.ScalaClassLoader$URLClassLoader.run(ScalaClassLoader.scala:86)
[error] at scala.tools.nsc.MainGenericRunner$.main(MainGenericRunner.scala:83)
[error] at scala.tools.nsc.MainGenericRunner.main(MainGenericRunner.scala)
Run Code Online (Sandbox Code Playgroud)
如果从未捕获到异常,则会导致应用程序关闭并终止JVM,这显然会结束调试会话.
您可以添加异常断点,以便调试器在抛出异常后立即暂停执行.单击调试工具栏中的"查看断点"按钮,然后查看"异常断点"选项卡.它有助于了解您正在寻找的异常类型,以便您可以为该特定类型设置异常断点; 您应该能够通过检查堆栈跟踪找到合适的类型.否则,您将最终暂停许多不相关的例外.如果您知道发生异常的线程,那么将异常断点限制到该线程也会很有帮助.
请注意,SBT(如果您不分支单独的VM)和Scala的运行程序(如果您正在分叉)都会捕获客户端代码中抛出的所有异常.因此,不存在"未捕获的异常",您将需要暂停"捕获的异常".
| 归档时间: |
|
| 查看次数: |
15996 次 |
| 最近记录: |