领先一步
VMware 提供培训和认证,以加速您的进步。
了解更多不久前,我介绍了 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 调试而言并非必要。
以下是所需步骤
如果您有 STS,您可以在表达式视图中执行评估:
在编辑器中,选择一个表达式并执行 CTRL-Shift-I 或 CMD-Shift-I(在本例中为names
)
请注意,在评估中不允许使用闭包,并且必须在 Groovy -> 调试器 -> 扩展调试支持页面中显式启用 Groovy 调试评估
使用此方法调试 DSLD 脚本将帮助您创建更大的脚本以支持更复杂的 Groovy DSL。