调试 DSLD 脚本

工程 | Andrew Eisenberg | 2011 年 8 月 2 日 | ...

不久前,我介绍了 DSL 描述符(DSLD)用于 Groovy-Eclipse。DSLD 是 Groovy 脚本,为 Eclipse 工作区中的 Groovy 项目提供丰富的编辑支持(内容辅助、导航等)。由于 DSLD 只能在运行的 Eclipse 进程中执行,因此调试不像启动 Eclipse 调试器并逐步执行 Groovy 脚本那样简单。在这篇文章中,我将描述一些简单和更复杂的技术,您可以使用这些技术来调试您的 DSLD。

要使所有这些都能正常工作,您需要最新的开发版本

简单而粗略

调试 DSLD 最简单、最粗略的方法是使用println。这会将表达式打印到正在运行的 Eclipse 进程的标准输出中,如果您从命令行启动了 Eclipse,则可以看到这些输出。但是,我建议改用log语句。这会将日志信息打印到 Groovy 事件控制台

如下例所示,每次MethodParams.dsld中的切点匹配时,vals的当前值都会打印到 Groovy 事件控制台。

log方法可以在 DSLD 脚本中的任何位置使用。事件控制台中的所有日志条目都以“======"为前缀。Groovy 事件控制台还会显示脚本的编译错误和抛出的异常,因此即使 DSLD 脚本不包含任何log语句,它也非常有用。

当不使用事件控制台时,最好将其关闭,因为跟踪信息会很快变大,最终会消耗大量的内存和处理能力。

高级

打印和日志语句仅具有有限的用途。可以使用适当的调试支持来调试 DSLD,并且能够设置断点、单步执行代码和执行调试评估。即使设置有点复杂,在调试复杂脚本时也可能值得一试。本质上,您需要在 Eclipse 调试器中启动 Eclipse 的新实例(运行时工作区),并通过该实例调试脚本。这里 一个 大量 的信息 可用 关于创建和使用 Eclipse 运行时工作区,但其中大部分对于 DSLD 调试而言并非必要。

以下是所需步骤

  1. 安装 Groovy-Eclipse 源代码(可选,但对于深入了解 DSLD 如何执行很有用)。您可以从 Eclipse 的安装管理器中执行此操作。选择 Groovy-Eclipse SDK。请参阅 此处了解更多详细信息
  2. 创建并启动一个新的空 Eclipse 工作区。您可以通过从命令行启动 Eclipse 并指定新工作区位置的 -data 参数来执行此操作。此工作区是将启动第二个工作区的宿主,您的 DSLD 实际上位于该工作区中。
  3. 在新工作区中创建一个新的 Groovy 项目,最初为空
  4. 启动运行时工作区。首先打开启动配置对话框:然后通过双击Eclipse 应用程序创建一个新的启动配置。在“工作区位置”部分,选择包含 DSLD 的工作区的文件系统目录:
  5. 运行时工作区启动后,将要调试的 DSLD 从运行时工作区拖放到宿主工作区中新创建的项目中。执行此操作时,您将看到如下所示的对话框:确保选择链接。链接文件将确保在一个工作区中进行的更改会反映在另一个工作区中。我建议拖放(而不是其他导入文件到工作区的方法),因为这是确保文件被链接而不是复制的最简单方法。
  6. 在宿主工作区中的 DSLD 中设置断点。
  7. 在运行时工作区中执行一些使用脚本的操作。也许将鼠标悬停在 DSLD 应用到的 Groovy 文件中某个有趣的标识符上。
  8. Eclipse 将在断点处停止
  9. Eclipse 首次在断点处停止时,源代码将不会显示
    您必须将新创建的 Groovy 项目显式添加到 Eclipse 运行时启动配置的源查找路径中。完成后,源代码将可用。
  10. 欢呼吧!您现在应该能够使用调试器调试 DSLD 脚本了。

变量视图将起作用:

如果您有 STS,您可以在表达式视图中执行评估:

在显示视图中:

在编辑器中,选择一个表达式并执行 CTRL-Shift-I 或 CMD-Shift-I(在本例中为names

请注意,在评估中不允许使用闭包,并且必须在 Groovy -> 调试器 -> 扩展调试支持页面中显式启用 Groovy 调试评估

使用此方法调试 DSLD 脚本将帮助您创建更大的脚本以支持更复杂的 Groovy DSL。

获取 Spring 电子邮件简报

通过 Spring 电子邮件简报保持联系

订阅

领先一步

VMware 提供培训和认证,以加速您的进步。

了解更多

获取支持

Tanzu Spring 在一个简单的订阅中提供 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件。

了解更多

即将举行的活动

查看 Spring 社区中所有即将举行的活动。

查看全部