2012-01-18 137 views
1

有没有在调试时将代码插入Scala应用程序的方法?例如,我可以通过方法和分配这样的事情,在Scala中调试时交互式执行代码

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

在那里我可以再检查,并与ci互动,以及任何其他变量的范围。

+0

看看这个答案:http://stackoverflow.com/a/2161749/576766 – tenshi 2012-01-18 21:27:50

+0

可能重复的[在任意scala代码位置放入解释器](http://stackoverflow.com/questions/ 2160355 /放入任意位置的解释器 - 代码位置) – 2012-01-18 22:16:18

+0

我知道另一个话题,但它似乎并不像Scala 2.9那样工作,特别是当我使用'sbt'时。 – duckworthd 2012-02-07 05:32:37

回答

3

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

你可以做的是:

  1. 使用“变量”视图来查看变量的当前值和修正值,
  2. 告诉调试器“降帧”,使其启动再次调用当前方法,使用堆栈中的原始值,修改代码并保存导致调试器插入新代码并丢弃到框架的文件,即重新启动方法调用(这并不总是奏效 - 这取决于你可以改变你可能需要重新启动应用程序的代码,例如,如果你改变了类的定义)

什么,你不能做的是:

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

我一直在使用IntelliJ IDEA。如果在Eclipse中支持足够好,也许我应该迁移? – duckworthd 2012-02-07 05:32:00

+0

我不知道scala的IntelliJ插件,但Eclipse的一个是Typesafe支持的,目前正在积极开发中,如果有帮助的话... – 2012-02-08 20:24:12