gpt4 book ai didi

scala - 如何使用 Eclipse 调试 Scala 宏

转载 作者:行者123 更新时间:2023-12-01 12:45:30 26 4
gpt4 key购买 nike

我正在尝试使用 Eclipse IDE 在 Scala 宏实现中设置断点,但失败了

首先:Scala Macros 摇滚!到目前为止,我更喜欢 Clojure 而不是 Scala,但是对于宏我不再确定

我正在尝试创建一个将返回函数的 toString 和函数本身的宏。当它起作用时,我将创建一个具有合理 toString 的新函数。啊快乐的日子。

但我需要能够调试宏。我使用 Eclipse (20110615-0604) 和 Scala (2.10.1)。我从 http://www.warski.org/blog/2012/12/starting-with-scala-macros-a-short-tutorial/ 下载了 scala-compiler-2.10.1.jar 和代码。现在工作。我也写了几个简单的宏。宏位于 eclipse 项目“ScalaMacro”中,使用它们的代码位于单独的项目“HelloScalaMacro”中

我现在想调试它们

按照 http://docs.scala-lang.org/overviews/macros/overview.html 中的说明进行操作我创建了一个以 scala.tools.nsc.Main 作为入口点的运行时配置。我添加了 -cp HelloScala.scala,当我运行配置时,它实际上似乎编译了代码(如果我输入错误,它会正确报告错误)。

不幸的是,指令暗示宏实现中的断点应该导致 Eclipse 暂停。它没有。

我做了通常的事情:谷歌搜索 Eclipse/Scala macro/Debug/Breakpoint,阅读 scala-macro 标签中的所有 stackoverflow 问题,并尝试了很多我能找到的每个 eclipse 设置。

因此,如果你们中有人知道如何设置断点,能否告诉我如何设置:它是 eclipse 版本/scala 版本/...问题吗?

最佳答案

我自己还没有尝试过,原则上它失败的可能性与您已经尝试过的一样(或更有可能),但如果成功,它对您来说可能会更方便。

要尝试此操作,您应该安装 Scala-IDE 以及源代码功能。确保您使用的 Eclipse 安装是“Eclipse Classic”、“面向 RCP 开发人员的 Eclipse”或您自己想出的类似组合。

您还需要安装 Equinox Weaving Launcher 插件,它允许您创建“Eclipse 应用程序与 Equinox Weaving”启动器。

现在:

  1. 创建一个新的工作空间
  2. 创建一个 Scala 项目
  3. 在该项目中植入您的宏代码
  4. 在宏源中添加断点

准备调试:

  1. 创建一个新的“使用 Equinox Weaving 的 Eclipse 应用程序”调试启动配置。起个比“New_configuration”更优雅的名字。

    • 在“位置”下,将其指向一个新的不同工作区目录
    • 在“配置”选项卡下,提供类似“-Xmx1536m”的内容
    • 默认情况下,您运行的 Eclipse 实例可用的所有插件都应该可供您即将启动的实例使用。 Eclipse 可能需要一些哄骗才能在类路径中包含一个非插件项目——如果这不起作用,那是我首先要尝试查看的。
  2. 您现在需要启动调试配置。

    • 根据您的 Scala-IDE 版本,您可能会遇到“多个启动器可用——选择一个...”警告。我会选择“支持 Equinox Weaving 的 Eclipse 应用程序启动器”。

进入正在调试的 Eclipse 实例后:

  1. 创建您要使用宏的项目
  2. 确保添加对二进制输出的依赖
  3. 将您的宏的一个小使用示例添加到正在调试的工作区中的项目中。
  4. 双手合十
  5. build

理论上,启动 Eclipse 实例现在将在您的断点处暂停正在调试的实例。

关于scala - 如何使用 Eclipse 调试 Scala 宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16395399/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com