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