从Grails 2.2以后默认run-app命令将启动Grails应用程序在一个单独的Java虚拟机。 这就是所谓的分叉的Tomcat Grails中的执行。 这样的类路径Grails构建系统和应用程序也不会干预,两个进程都有自己的内存设置。 我们可以看到在grails-app / conf / BuildConfig设置。 groovy在那里我们可以找到grails.project.fork.run配置属性。 当我们想要调试程序等IDE IntelliJ IDEA我们不能使用调试命令,因为这只会让我们调试Grails构建系统。 我们不会到达断点在我们的源代码。 但是Grails 2.3引入了一个额外的理由run-app命令:——debug-fork。 如果我们使用这个额外的参数JVM运行Grails应用程序将停止并监听一个调试会话连接,然后继续。 我们可以在IntelliJ IDEA配置调试配置(或另一个IDE)附着在等待Grails达成协议
假设我们有一个名为forked-debug的Grails应用程序,我们已经创建了一个项目的想法对于这个应用程序。 我们点击选择run/debug配置按钮并选择Edit Configurations…:
打开一个对话框,在这里我们可以改变Grails命令和设置JVM选项。 我们添加的选项——debug-fork到命令行字段在这个对话框中:
我们点击OK按钮以保存更改并关闭对话框窗口。 接下来我们可以运行Grails应用程序使用改变运行配置:
执行我们的应用程序,然后我们可以在控制台上看到程序开始监听5005端口
现在是时候再创建一个新的调试配置。 我们再次点击选择run/debug配置按钮并选择Edit Configurations…。 我们添加一个新类型的配置,所以我们点击+号添加一个remote类型
我们选择remote类型的对话框窗口显示了现在很多输入字段,我们可以保留默认值。 最好给出这个配置一个新的名字,例如Grails:forked-debug(debug):
我们单击OK按钮关闭对话框窗口。 Grails应用程序仍在等待一个debug会话,所以我们使用我们的新配置与debug按钮:
在控制台窗口中我们可以看到远程调试已经连接上5005端口, 然后可以在代码中打下断点,使用调试功能了。
我们也可以使用再命令行使用参数——debug-fork,然后使用IDEA调试配置附加到Grails应用程序的实例。
本测试用例使用 Grails 2.3.4 and IntelliJ IDEA 13编写。