我在嘗試在grails中調試某些代碼時遇到困難。這很難寫入文字,所以我發佈了一個屏幕截圖,顯示問題是here。簡而言之,在我調試時,調試器開始跳轉,而不是遵循我已有的程序邏輯。我發現的唯一的其他類似問題是一歲,沒有解決辦法,可以找到here。Groovy調試器不同步
到目前爲止,我的最佳猜測是調試器正在顯示我輸入的文本,但實際上正在執行緩存在某處的類文件的舊版本。因此,我想:
- 清潔項目
- 手動刪除所有的類文件從目標文件夾,從目標eclipse文件夾
- 搜索我的整個硬盤的其他文件具有類似名稱
- 從工作區中刪除我的項目,重新添加
- 關閉並重新打開IDE
- Grails的刷新依賴性
- 將項目導入新IDE(我正在使用GGTS,我切換到IntelliJ)
這些解決方案都沒有任何效果。我意識到問題出在一個.groovy文件中,而且我正在編寫幾乎純粹的Java,因此我刪除了.groovy文件,並在.java文件中重新創建該類。這解決了我的問題。不幸的是,我又遇到了問題,這次它是一個嚴重依賴於grails框架的控制器,所以解決方案不是一種選擇。除了在.groovy文件之外,另一個相似之處在於代碼在if語句中斷開。
我的下一個步驟:
- 驗證應用程序不會被使用打印功能,可監控實際的執行流來執行我看到的代碼。
- 註釋掉整個函數並重新添加一行一行的功能,以查看是否可以看到它是什麼打破它。
- 刪除.groovy文件,並將其重新創建爲另一個.groovy文件。
任何幫助表示讚賞,因爲我無法找到任何答案在線我會繼續更新這個問題,因爲我瞭解更多。
更新: 我驗證了正在執行的代碼與正在執行的代碼不同。詳情here。具體來說,調試器在代碼塊結束時停止的地方只是一種幻想。 現在我正在通過忽略調試器中的異常跳轉來解決這個問題。我已經能夠以這種方式很好地編寫代碼,但它遠非理想。 – benjaminjsanders 2013-04-05 19:38:25
更新:我注意到另一個可能與Grails調試器有關的問題。我試圖通過添加一個變量來解決這個問題,然後在程序執行的不同點處打印出它的值。我發現當我清理並重新編譯程序時,聲明該變量的行沒有被執行,但調用該變量來打印其值的行正在執行。顯然這引發了一個異常,因爲調試器認爲該變量沒有被聲明。 – benjaminjsanders 2013-04-22 19:04:42
我試圖通過從grails 1.3.7升級到grails 2.2.0來解決所有上述問題。升級進展不順利,此時應用程序非常小,所以我在grails 2.2.0中創建了一個新項目,使用正確的名稱創建了空類,然後粘貼了舊代碼的邏輯。其效果是消除所有先前存在的問題區域和調試器錯誤,但是同樣的問題也在新項目中出現,只是在代碼中的不同位置。 – benjaminjsanders 2013-04-22 19:07:30