问题:
最近访问grails.org,看到grails framework已经发展到2.3.x了,不免想尝尝鲜。下载了最新的grails-2.3.x之后,创建了一个新的grails app。
添加Book domain对象后有自动生成了BookController和相关gsp views。在对BookController进行调试的时候,发现无法进入设定的断点。起先以为是IDE版本(IntelliJ IDEA12.x.x ultimate)和Grails 2.3.x不兼容,但全部换上最新的IntelliJ IDEA 13和Grails 2.3.4之后,问题依然存在。
答案:
经过一番探索,终于找到答案,原来是grails 2.3.x之后,内嵌webserver换上了tomcat7,并且使用remote debug,IDEA点击debug就自动进入调试模式的功能没有了。但这需要开发者做若干设置才能调试。过程如下:
在IDEA的toolbar的debug区域,选择您的当前的Grails App,然后再点击Edit Configurations打开运行配置。
在Command Line栏修改run-app为run-app --debug-fork,点击OK按钮保存。
到这一步,大家都会遇到点击debug按钮后,grails app停到一行信息Listening for transport dt_socket at address: 5005之后,就没有了。连8080端口都访问不了,更不要提调试了。
实际情况是,你还要再做一步。回到Edit Configurations,点击左上角的+按钮,选择Remote,修改一下Unnamed名称,比如localdebug,保存即可(此界面上Host=localhost和Port=5005是可以修改的,这在非本机远程调试时就很有用了)。
回到IDEA主窗口,点击debug,开启调试localdebug,在Console上显示Connected to the target VM, address: 'localhost:5005', transport: 'socket',就表示成功了。打开浏览器访问http://localhost:8080/yourapp,即可进入断点调试功能。
补充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]补充2:如果是运行于其他webserver,在JVM加上以下参数,也可以完成5005端口的监听,可用于远程调试。
-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中去
来源:oschina
链接:https://my.oschina.net/u/237554/blog/214663