我想知道當我調試Scala代碼而不是Java代碼時,它對調試器(Intellij IDEA + Scala插件)有什麼不同。據我的理解,調試器與語言緊密結合,即Java調試器無法處理Scala代碼,但顯然JVM是關注的中心,這意味着只要它是字節碼,任何調試器都可以做到。對 ?它是否對調試器有所不同,它是我正在調試的Scala代碼?
重要更新:問題是給出一個字節碼調試器如何限制Scala的例子。假設有一個斷點,我不想去下一行,但我希望調試器在應用程序的上下文中評估一個Scala表達式(例如,我喜歡從一個單例對象調用一個操作符方法)。調試器卡住了,因爲它不能理解Scala。我必須自己完成這個轉換,然後把最終的Java輸入到調試器中。 問題是隻能在字節碼級別處理「斷點」。如果你想把一個表達置於監視下怎麼辦?調試器必須瞭解Scala來評估觀察到的表達式,對嗎?這一次我確定我是對的。復仇是我的,主耶穌;-)
這是真的,但它給Scala帶來了挑戰,因爲一行Scala代碼通常包含很多步驟,因爲它基於更多表達式,所以在線級調試Scala遠不如Java中的行級調試,這往往會在每一行有更多的單獨行動。在EPFL中有一些人正在尋找爲Scala生成的類文件添加額外的調試信息來支持更好的專業Scala調試器。 – 2011-01-14 10:55:25