抢先一步
VMware 提供培训和认证,助您快速提升。
了解更多不久前,我为 Groovy-Eclipse 引入了 DSL 描述符 (DSLDs)。DSLDs 是 Groovy 脚本,为 Eclipse 工作空间中的 Groovy 项目提供丰富的编辑支持(内容辅助、导航等)。由于 DSLDs 只能在正在运行的 Eclipse 进程中执行,调试不像启动 Eclipse 调试器并单步执行 Groovy 脚本那么简单。在本文中,我将介绍一些用于调试 DSLDs 的简单和更复杂的技术。
为了使所有这些工作正常运行,您将需要最新的开发版本:
调试 DSLDs 最简单粗暴的方法是使用 println
。这将把表达式打印到运行中的 Eclipse 进程的标准输出,如果您从命令行启动 Eclipse,就可以看到这些输出。然而,我建议改用 log
语句。这会将日志信息打印到 Groovy 事件控制台。
正如您在下面的示例中看到的,每次 MethodParams.dsld
中的切点匹配时,vals
的当前值都会打印到 Groovy 事件控制台。
log
方法可以在 DSLD 脚本的任何地方使用。事件控制台中的所有日志条目都以 "======" 为前缀。Groovy 事件控制台还会显示脚本的编译错误和抛出的异常,因此即使 DSLD 脚本不包含任何 log
语句,它也相当有用。
不使用事件控制台时,最好将其关闭,因为跟踪信息可能会迅速变大,并最终消耗大量内存和处理能力。
打印和日志语句的使用是有限的。通过设置断点、单步调试代码和执行调试评估,可以为 DSLDs 提供适当的调试支持。尽管设置有点复杂,但在调试复杂脚本时可能值得。本质上,您需要在 Eclipse 调试器中启动一个新的 Eclipse 实例(一个运行时工作台),并通过它来调试脚本。有 很 多 关于 创建 和 使用 Eclipse 运行时工作台的信息,但其中大部分对于 DSLD 调试来说并非必需。
以下是所需的步骤:
如果您安装了 STS,可以在表达式视图中执行评估:
在编辑器中,选择一个表达式并按下 CTRL-Shift-I 或 CMD-Shift-I(本例中是 names
)。
请注意,闭包不允许在评估中使用,并且必须在 Groovy -> Debugger -> Extended Debugging Support 页面中明确启用 Groovy 调试评估。
使用此方法调试 DSLD 脚本将帮助您创建更大的脚本,以支持更复杂的 Groovy DSLs。