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中去

相關文章
相關標籤/搜索