领先一步
VMware 提供培训和认证,以加速您的进步。
了解更多我们在最近发布的 SpringSource Tool Suite 2.5.1 中对 Groovy 调试进行了重大改进。一直以来,都可以使用 Eclipse 的 Java 标准调试支持来调试 Groovy 应用程序,但是由于 Groovy 与 Java 的语言差异及其元编程特性,许多调试功能的效果并不理想。
本文中的所有屏幕截图均来自一个简单的Grails应用程序,因此此处介绍的调试功能隐式地使用了动态添加的 Groovy 方法和属性。
借助增强的 Groovy 调试支持,“单步进入”命令的工作方式完全符合预期。过去,由于 Groovy 大量使用反射和缓存的调用站点,有时会单步进入不重要的堆栈帧,而跳过重要的堆栈帧,这使得调试有时变得令人不快。
现在,可以单步进入 Groovy 方法和闭包,忽略所有不重要的 Groovy 运行时和框架调用。
可以在 Groovy -> 调试器 -> 扩展调试支持首选项页面中禁用此支持。
当调试器在 Groovy 堆栈帧上停止时,“显示”视图和“表达式”视图现在可以识别 Groovy 语法,并完全访问 Groovy 的动态添加的方法和属性。
在“显示”视图中
在“表达式”视图中
甚至在编辑器中(通过选择代码片段并使用 CTRL-Shift-I 快捷键)
如果需要禁用此支持,也可以在 Groovy -> 调试器 -> 扩展调试支持首选项页面中进行操作。
在被调试的应用程序中可以执行的操作,几乎都可以在“显示”视图中执行,除了定义新的类、方法、属性和闭包。Groovy 是一门大型语言,并且不断发展。可能还有一些尚未支持的语言特性,但基本功能(包括变量定义、循环、条件语句以及 gstring 列表和映射文字)都可以在评估中使用。
例如,可以添加 Grails 域类的新的实例。
并遍历集合。
Groovy元对象协议(MOP)提供了一种结构化的方法来更改 Groovy 的语义,通过让最终用户控制方法调用和属性访问。新的 Groovy 调试支持的核心依赖于 Groovy MOP 进行代码评估。以下是它的工作原理:
这使我们能够几乎完全控制来自 STS 运行实例的被调试的应用程序。我们惊讶并印象深刻的是,Groovy MOP 足够强大,可以用于在远程应用程序上执行 Groovy 脚本。
如果您有任何意见、功能请求或遇到问题,请提交 Jira 问题或在SpringSource Tool Suite 论坛上提及。