問題: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
在IDEA的toolbar的debug區域,選擇您的當前的Grails App,而後再點擊Edit Configurations打開運行配置。dom
在Command Line欄修改run-app爲run-app --debug-fork,點擊OK按鈕保存。socket
到這一步,你們都會遇到點擊debug按鈕後,grails app停到一行信息Listening for transport dt_socket at address: 5005以後,就沒有了。連8080端口都訪問不了,更不要提調試了。svn
實際狀況是,你還要再作一步。回到Edit Configurations,點擊左上角的+按鈕,選擇Remote,修改一下Unnamed名稱,好比localdebug,保存便可(此界面上Host=localhost和Port=5005是能夠修改的,這在非本機遠程調試時就頗有用了)。ui
回到IDEA主窗口,點擊debug,開啓調試localdebug,在Console上顯示Connected to the target VM, address: 'localhost:5005', transport: 'socket',就表示成功了。打開瀏覽器訪問http://localhost:8080/yourapp,便可進入斷點調試功能。spa
補充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中去