我無法在Intellij IDEA中調試我的代碼。當調試模式處於活動狀態並正在運行時,但斷點沒有檢測到表示有效且可停止的斷點的「v」。IntelliJ IDEA調試器無法在Grails項目上工作
看到圖片:http://prntscr.com/1w0owu。
我真的在網上搜索答案。我想要做什麼?
我無法在Intellij IDEA中調試我的代碼。當調試模式處於活動狀態並正在運行時,但斷點沒有檢測到表示有效且可停止的斷點的「v」。IntelliJ IDEA調試器無法在Grails項目上工作
看到圖片:http://prntscr.com/1w0owu。
我真的在網上搜索答案。我想要做什麼?
我已經嘗試所有在這裏提到沒有成功。 唯一有用的信息是here。
在本質上則應該通過添加禁用分叉執行以下操作grails-app/conf/BuildConfig.groovy
:
grails.project.fork = [
test: false,
run: false
]
現在調試中的IntelliJ IDEA終極版提供v.12.1.6只是沒有遠程調試普通調試。 經過Grails 2.3.1,Java 1.7.0_45,Windows 7 64位測試。
在Grails 2.3.4和IntelliJ 13以及+1上測試。加工。 –
測試Grails 2.3.8和IntelliJ 13.1.3以及+1工作。 –
在Grails 2.4.0和IntelliJ 13.1.3上測試 - 全部正常工作!我個人剛剛評論過上述配置圖中的'run'和'test'行。 –
試試這個:
在理念選擇編輯配置從列表旁邊的 '運行' 按鈕。然後添加遠程,選擇您的名字並保留默認的遠程配置設置。 (端口5005等)
使用
grails run-app --debug-fork
在想法運行從控制檯您的應用程序,從列表中選擇您的配置和打調試按鈕時,控制檯顯示的信息:
Listening for transport dt_socket at address: 5005
這就是我一直在尋找的東西。關鍵是使用IntelliJ自動嘗試爲我的Grails應用程序插入的調試配置設置_new_ ** Remote **調試配置_instead of_,這取決於我的應用程序的代碼。 我使用'grails -debug run-app'作爲我的控制檯命令,然後在IntelliJ的調試模式下運行新的遠程配置,並且它直接連接到我的grails應用程序中。 – guyot
只是猜三次:
嘗試運行run-app
,而不是run-war
,都應該工作,但可能是run-war
只是不工作。
或者:嘗試從控制檯遠程調試:
grails -debug run-app
,然後用遠程調試的思想交流。
或者,最後一招:將您的項目降級到以前的Grails版本可能會奏效。是的,這真的很煩人。
希望這會有所幫助。
它必須是-debug-fork,否則你是對的 – fabiangebert
由於Grails的2.3,叉形執行數Grails的命令(例如run-app
,test-app
)爲introduced。 如果您只是從IntelliJ IDEA調試Grails應用程序,則GrailsStarter
進程將啓動,其上具有調試選項。 IDEA的控制檯上的輸出將是:
/usr/lib/jvm/default-java/bin/java -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:59935,suspend=y,server=n [...] /opt/idea-IU-133.330/lib/idea_rt.jar org.codehaus.groovy.grails.cli.support.GrailsStarter [...] run-app Connected to the target VM, address: '127.0.0.1:59935', transport: 'socket'
應用程序本身將在名爲ForkedTomcatServer
一個單獨的進程來啓動。這是您的代碼運行的地方,以及您的調試器應實際連接到的位置。
爲了實現這個目標,在BuildConfig.groovy
的配置grails.project.fork
的配置中設置debug: true
。剛纔從IDEA(不調試)運行的Grails,你會看到下面一行在控制檯當應用程序已準備好爲HTTP請求:
Listening for transport dt_socket at address: 5005
這是你想直接單獨remote run configuration來。只要連接遠程調試器,發出HTTP請求並調試就可以工作。
您可以爲編譯/測試/運行/戰爭/ Grails的控制檯也禁止分叉執行通過設置在grails.project.fork
到false
命令條目相關聯的價值完全命令。但是,那麼您將失去Grails 2.3中添加的分支執行的好處。
謝謝,這讓我走上了正軌。 Ted Naleid提供了一個很好的總結,並詳細說明了禁用分支執行以進行調試的優點和缺點,並提供了兩個有用的備選方案:http://naleid.com/blog/2014/11/10/debugging-grails-forked-mode – codehead
我在Mac Os x Lion上測試了最新的帶有Grails 2.3.4的intellij。
然後我嘗試了Igors的建議,它沒有分叉模式。
grails.project.fork = [
test: false,
run: false
]
請檢查您是否要調試分叉模式,你應該檢查以下博客文章explainsvery好。
http://blog.jdriven.com/2013/12/grails-goodness-debugging-app-forked-mode/
這不應該永遠是默認的配置,只留給個人的選擇。在intellij的調試模式下運行這兩種配置讓它變得非常痛苦。首先,您必須在run-app之後添加「--debug-fork」來設置或修改正常運行配置。其次,您必須配置遠程調試,同時接受所有的默認值。然後,您必須運行運行配置,並在運行時運行調試配置。多麼痛苦。我更喜歡在開發時完全不用分叉選項。時間就是金錢,我沒有時間四處亂逛。請參閱HAKI先生對此的解釋。 http://blog.jdriven.com/2013/12/grails-goodness-debugging-app-forked-mode/
我認爲如果你首先給出答案,那麼答案會更有用,然後你的評論爲什麼它很煩人。也許也會放棄大部分評論。 – verdammelt
沒問題...看到我上面編輯的條目:http://blog.jdriven.com/2013/12/grails-goodness-debugging-app-forked-mode/祝你好運。 –
這是一個更新。我似乎沒有再遇到這個問題,但是如果它對你來說不重要,我會在conf目錄下的BuildConfig.groovy文件的部分內容中註釋,這些文件會在grails運行時處理JVM以優化內存。 //取消註釋(並調整設置)以分叉JVM以分離// classpaths //grails.project.fork = [ //運行:[maxMemory:1024,minMemory:64,debug:false,maxPerm:256 ] //] –
調試Grails(2.3+)應用程序可以通過兩種方式完成。
1.簡單的解決方案:關閉調試
編輯BuildConfig.groovy:
grails.project.fork = [
war: [maxMemory: 768, minMemory: 64, debug: false, maxPerm: 256, fork ...
run: [maxMemory: 768, minMemory: 64, debug: false, maxPerm: 256, fork ...
到
grails.project.fork = [
war: [maxMemory: 768, minMemory: 64, debug: false, maxPerm: 256, fork ...
run: false,
優點:
缺點:
2.涉案的解決方案:調試分叉運行
這是一個較爲複雜的解決方案,你一個調試器附加到正在運行的Grails應用程序。詳細描述如下in this blog post。
設置後,您有一個額外的運行配置,允許您在分叉模式下啓動grails,而另一個額外的運行配置允許您調試分叉模式。問題在於你需要啓動它或者它不起作用。
優點:
缺點:
思考
溶液2 MOS從某種意義上講,它具有更高的靈活性。我個人不使用調試很多,所以只需在正常模式下啓動。當我想調試時,我在調試模式下重新啓動。
如果您需要調試並且需要重新啓動很多,解決方案1將更好。例如,當您在BootStrap.groovy中處理域類或數據庫設置時。
您是否看到這篇文章?它詳細介紹瞭如何一步一步讓我過去了我的問題。
http://mrhaki.blogspot.com/2013/12/grails-goodness-debugging-app-in-forked.html
方式更好。不需要以非分叉模式運行... – Philippe
結帳this博客有關調試Grails的叉形模式。
在2016年的Grails 3.x上,其他所有答案都不適用於我/ Intellij 15.0.4。這確實爲我工作:
開始的Grails在該命令的IntelliJ:
run-app --debug-jvm
控制檯應該輸出:5005 Grails應用程序的環境中運行,在http://localhost:8080: 「在地址監聽運輸dt_socket發展「
現在您可以在Intellij中添加一個類型爲」Remote「的新配置。然後以默認值啓動它。
而新的調試控制檯窗口應該寫: 「連接到目標VM,地址: '本地主機:5005',運輸: '插座'」
完成。
對於那些有興趣,引用的Grails 3.X文檔用於啓動調試的服務器是在第2.8節,runningAndDebuggingAnApplication:
http://grails.github.io/grails-doc/3.1.x/guide/gettingStarted.html#runningAndDebuggingAnApplication
「有幾種方法來執行應用程序類,如果你正在使用IDE,那麼您只需右鍵單擊該類並直接從您的IDE運行它,它將啓動您的Grails應用程序。 這對於調試也很有用,因爲您可以直接從IDE進行調試,而無需連接遠程調試器使用命令行中的run-app --debug-jvm命令。「
重要說明。當我嘗試「只需右鍵單擊該類並直接從IDE運行它」時,該應用程序確實啓動了。不過,我發到我的控制器的所有請求導致500錯誤與消息:「無法解析視圖,名稱與名字‘grailsDispatcherServlet’小服務程序‘/ myendpoint’
所以,我恢復到上面的說明
。這是Grails的3和Idea(2016.1)一個很簡單的事情。沒有必要編輯任何文件了,因爲在其他答案建議。
出於某種原因,這個想法工具欄中的調試圖標灰色,因此您只需導航到您的應用程序入口點(具有啓動應用程序的靜態主要方法的類),單擊左側排水槽中的一個運行箭頭,然後選擇t調試選項。
從JetBrains的文檔:
https://www.jetbrains.com/help/idea/2016.1/getting-started-with-grails-3.html
調試Grails的3應用
的IntelliJ IDEA讓您調試Grails的使用 Application.groovy 3應用程序。
在Project工具窗口,打開init目錄,並用鼠標右鍵單擊 Application.groovy從下拉列表中選擇調試的Grails:「名稱」 grails3_debug_app您也可以使用編輯器來啓動調試 過程。
它曾經工作過嗎?我遇到了intellij和grails不同步的情況,所以調試停止工作,因爲intellij沒有「意識到」代碼。 'grails clean'可以很快解決這個問題。什麼版本的Intellij和Grails? – Gregg
我正在使用最新版本。 Grails 2.3.0和Intellij 12.1.5。 Clean命令不起作用。我意識到.grails/2.3.0/projects內的項目文件夾沒有創建。 – ricardogobbo
當我在「grails.project.fork」下的* compile *設置中錯誤地設置了「debug:true」時,發生了這種情況。 – RMorrisey