我正在尝试使用Eclipse IDE在失败的Scala Macro实现中设置断点
首先:Scala Macros Rock!到目前为止,我更喜欢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/的代码现在可以正常工作了。我也写了几个简单的宏。宏是在一个日食项目" ScalaMacro"并且使用它们的代码在一个单独的项目中" HelloScalaMacro"
我现在想调试它们
按照http://docs.scala-lang.org/overviews/macros/overview.html的说明,我创建了一个以scala.tools.nsc.Main为入口点的运行时配置。我添加了-cp HelloScala.scala,当我运行配置时,它实际上似乎编译了代码(如果我输入错误,它会正确报告错误)。
不幸的是,这些指令意味着宏实现中的断点应该导致Eclipse暂停。它没有。
我已经做了通常的事情:google搜索Eclipse / Scala宏/ Debug / Breakpoint,读取scala-macro标记中的所有stackoverflow问题,并且在我能找到的每个eclipse设置中玩了很多。 / p>
所以,如果你们中的任何一个知道如何设置断点,你能不能让我知道:它是eclipse版本/ scala版本/ ......问题吗?
答案 0 :(得分:2)
我自己没有尝试过,原则上它很可能(或更有可能)失败,就像你已经尝试过的那样,但如果成功,它对你来说会更方便。
要尝试此操作,您应该安装Scala-IDE以及源功能。确保您正在使用Eclipse安装,这是Eclipse经典"," Eclipse for RCP Developers",或者您自己提出的类似混合物。
您还需要安装Equinox Weaving Launcher插件,这将允许您使用Equinox Weaving"创建一个" Eclipse应用程序。发射器。
现在:
准备调试:
使用Equinox Weaving创建一个新的" Eclipse应用程序"调试启动配置。给出一个比#34; New_configuration"更优雅的名字。
您现在需要启动调试配置。
进入正在调试的Eclipse实例后:
理论上,启动Eclipse实例现在将暂停正在调试断点的实例。
答案 1 :(得分:2)
Nadavwr(下面)给出的说明很有帮助,我向其他人推荐。
对我来说,关键的解决方案是要意识到涉及两个项目,定义宏的项目和使用宏的项目。相当愚蠢的是我试图调试定义宏的项目
因此文档中给出的说明是正确的,我只需要确保我在正确的项目中运行它们:当然很明显。
为了其他人的利益,我发现使用命令行scalac来使命令行正确是非常有用的:更快地编辑它,并控制我所在的目录,然后在eclipse中
对于想要使用Scala Macros的人来说,另一件事就是直接运行scalac的错误消息比来自eclipse的错误信息要好得多。