Debugging 在Scala中调试时以交互方式执行代码

Debugging 在Scala中调试时以交互方式执行代码,debugging,scala,interactive,Debugging,Scala,Interactive,有没有一种方法可以在调试时将代码插入Scala应用程序?比如,我可以要这样的东西吗 var c = 1.0 0.until(10).foreach{ i => if (i == 5) { startDebuggingMagicHere() } } 在这里,我可以通过方法和赋值检查并与c、I以及范围内的任何其他变量交互。在用于Eclipse的Scala IDE插件中,支持调试。在Scala代码中设置一个断点,您将能够做有限的事情。目前的支持不如Java好。我相信它计

有没有一种方法可以在调试时将代码插入Scala应用程序?比如,我可以要这样的东西吗

var c = 1.0
0.until(10).foreach{ i =>
   if (i == 5) {
      startDebuggingMagicHere()
   }
}

在这里,我可以通过方法和赋值检查并与
c
I
以及范围内的任何其他变量交互。

在用于Eclipse的Scala IDE插件中,支持调试。在Scala代码中设置一个断点,您将能够做有限的事情。目前的支持不如Java好。我相信它计划在夏天改善

您可以做的是:

  • 使用“变量”视图查看变量的当前值并修改值
  • 告诉调试器“拖放到帧”,以便它使用堆栈中的原始值再次启动当前方法调用
  • 修改代码并保存文件,使调试器插入新代码并放到框架中,即重新启动方法调用(这并不总是有效-取决于重新启动应用程序可能需要更改的代码量,例如,如果更改类定义)
  • 你不能做的是:

  • 从编辑器中检查变量
  • 在“显示”视图中编写代码并执行。这两种方法都适用于Java,但不适用于Scala

  • 看看这个答案:我知道另一个主题可能重复,但它在Scala 2.9中似乎不起作用,特别是如果我使用
    sbt
    。我一直在使用IntelliJ IDEA。如果Eclipse中的支持足够好,也许我应该迁移?我不知道scala的IntelliJ插件,但Eclipse插件由Typesafe支持,目前正在积极开发中,如果这有帮助的话。。。