How to debug with IntelliJ IDEA + Grails 2.3.x

问题:web

最近访问grails.org,看到grails framework已经发展到2.3.x了,难免想尝尝鲜。下载了最新的grails-2.3.x以后,建立了一个新的grails app。windows

添加Book domain对象后有自动生成了BookController和相关gsp views。在对BookController进行调试的时候,发现没法进入设定的断点。起先觉得是IDE版本(IntelliJ  IDEA12.x.x ultimate)和Grails 2.3.x不兼容,但所有换上最新的IntelliJ IDEA 13和Grails 2.3.4以后,问题依然存在。浏览器


答案:tomcat

通过一番探索,终于找到答案,原来是grails 2.3.x以后,内嵌webserver换上了tomcat7,而且使用remote debug,IDEA点击debug就自动进入调试模式的功能没有了。但这须要开发者作若干设置才能调试。过程以下:app

  1. 在IDEA的toolbar的debug区域,选择您的当前的Grails App,而后再点击Edit Configurations打开运行配置。dom

  2. 在Command Line栏修改run-app为run-app --debug-fork,点击OK按钮保存。socket

  3. 到这一步,你们都会遇到点击debug按钮后,grails app停到一行信息Listening for transport dt_socket at address: 5005以后,就没有了。连8080端口都访问不了,更不要提调试了。svn

  4. 实际状况是,你还要再作一步。回到Edit Configurations,点击左上角的+按钮,选择Remote,修改一下Unnamed名称,好比localdebug,保存便可(此界面上Host=localhost和Port=5005是能够修改的,这在非本机远程调试时就颇有用了)。ui

  5. 回到IDEA主窗口,点击debug,开启调试localdebug,在Console上显示Connected to the target VM, address: 'localhost:5005', transport: 'socket',就表示成功了。打开浏览器访问http://localhost:8080/yourapp,便可进入断点调试功能。spa

  6. 补充1:run-app --debug-fork的替代方案是修改grails-app/conf/BuidConfig.groovy中的grails.project.fork,debug从false改成true
    run: [maxMemory: 768, minMemory: 64, debug: true, maxPerm: 256, forkReserve:false]

  7. 补充2:若是是运行于其余webserver,在JVM加上如下参数,也能够完成5005端口的监听,可用于远程调试。

  8. -Xdebug -Xrunjdwp:server=y, transport=dt_socket,address=5005, suspend=n

但愿对你们有所帮助!

PS:IntelliJ IDEA 13 windows版本缺乏内置svn的支持,要么等13.0.1,要么本身安装一个svn client。

等13.0.1:http://youtrack.jetbrains.com/issue/IDEA-117518

安装svn client:http://www.sliksvn.com/en/download

安装完成后,要配置一下用户环境变量PATH,把C:\Program Files\SlikSvn\bin加到PATH中去

相关文章
相关标签/搜索