2012-01-18 39 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