2013-05-06 30 views
3

我想設置使用Eclipse IDE和失敗如何使用Eclipse

首先在斯卡拉宏實現斷點調試斯卡拉宏!到目前爲止,我更喜歡Clojure到Scala,但用宏我不再肯定

我試圖創建一個宏,它將返回函數的toString和函數本身。當這個工作,我會用一個明智的toString做一個新的功能。啊快樂的日子。

但我需要能夠調試宏。我使用Eclipse(20110615-0604)和Scala(2.10.1)。我下載了scala-compiler-2.10.1.jar和http://www.warski.org/blog/2012/12/starting-with-scala-macros-a-short-tutorial/的代碼現在可以工作。我也寫了幾個簡單的宏。宏是一個Eclipse項目「ScalaMacro」,並使用它們在一個單獨的項目「HelloScalaMacro」代碼

我現在想對其進行調試

http://docs.scala-lang.org/overviews/macros/overview.html說明我已經創建了一個運行時配置以scala.tools.nsc.Main作爲入口點。我已經添加了-cp HelloScala.scala,並且當我運行配置時,它實際上似乎編譯了代碼(如果我輸入錯誤,它會正確報告錯誤)。

不幸的是,這些指令意味着宏實現中的斷點應該會導致Eclipse暫停。它沒有。

我已經做了平常:谷歌搜索Eclipse/Scala宏/調試/斷點,閱讀所有在scala宏標籤中的stackoverflow問題,併發揮了很多與我可以找到每個月食設置。因此,如果你們中的任何人知道如何設置斷點,你能告訴我如何:它是一個eclipse版本/ scala版本/ ...問題嗎?

回答

2

我自己並沒有嘗試過,原則上它很可能(或更有可能)因爲你已經嘗試過而失敗,但如果成功,它可能對你更方便。

要嘗試此操作,應該安裝Scala-IDE以及源代碼功能。確保您正在使用「Eclipse Classic」,「Eclipse for RCP Developers」的Eclipse安裝或您自己提出的類似調劑。

您還將需要安裝Equinox Weaving Launcher插件,這將允許您創建「Equinox Weaving」Eclipse啓動器應用程序。

現在:

  1. 創建一個新的工作區
  2. 創建斯卡拉項目
  3. 廠在該項目
  4. 宏源添加一個破發點宏代碼

準備調試:

  1. 使用Equinox Weaving創建新的「Eclipse應用程序」調試啓動配置。給一個比「New_configuration」更優雅的名字。

    • 「位置」下,點它推向一個新的不同 workspace目錄
    • 「配置」選項卡下,提供所有插件可用類似「-Xmx1536m」
    • 默認情況下,你的跑步Eclipse實例應該可用於您即將啓動的實例。爲了在類路徑中包含一個非插件項目,Eclipse可能需要一些cajoling - 如果這不起作用,這是我第一次嘗試查看。
  2. 您現在要啓動調試配置。

    • 根據您的Scala-IDE版本,您可能會遇到「多個發射器可用 - 選擇一個...」警告。我會去「Equinox編織啓用的Eclipse應用程序啓動器」。

一旦Eclipse實例裏面正在調試:

  1. 創建項目要使用宏
  2. 確保添加在二進制輸出的依賴
  3. 將宏的小使用示例添加到正在調試的工作區中的項目。
  4. 手指交叉
  5. 構建

從理論上講,推出Eclipse實例將立即暫停該實例正在調試你的破發點。

+0

幾個小時的「試用本書中的每一個eclipse選項」,並且讓它工作。當StackOverflow允許我發佈適當的答案時 – 2013-05-06 12:29:52

2

Nadavwr(下面)給出的指示是有幫助的,我建議他們給其他人。

對我來說,關鍵的解決方案是意識到有兩個涉及的項目,定義宏的項目和使用宏的項目。相當愚蠢我試圖調試定義宏的項目

因此,文檔中給出的說明是正確的,我只需確保我在正確的項目中運行它們:顯然當然。

對於其他人的利益,我發現它非常有用使用命令行scalac得到命令行正確的:更快的編輯認爲,和控制該目錄我的,然後在eclipse

的對於想要使用Scala宏的人來說,要實現的另一件事是,來自運行scalac的錯誤消息比eclipse中的錯誤消息要好得多。