2013-04-05 60 views
3

我在嘗試在grails中調試某些代碼時遇到困難。這很難寫入文字,所以我發佈了一個屏幕截圖,顯示問題是here。簡而言之,在我調試時,調試器開始跳轉,而不是遵循我已有的程序邏輯。我發現的唯一的其他類似問題是一歲,沒有解決辦法,可以找到hereGroovy調試器不同步

到目前爲止,我的最佳猜測是調試器正在顯示我輸入的文本,但實際上正在執行緩存在某處的類文件的舊版本。因此,我想:

  • 清潔項目
  • 手動刪除所有的類文件從目標文件夾,從目標eclipse文件夾
  • 搜索我的整個硬盤的其他文件具有類似名稱
  • 從工作區中刪除我的項目,重新添加
  • 關閉並重新打開IDE
  • Grails的刷新依賴性
  • 將項目導入新IDE(我正在使用GGTS,我切換到IntelliJ)

這些解決方案都沒有任何效果。我意識到問題出在一個.groovy文件中,而且我正在編寫幾乎純粹的Java,因此我刪除了.groovy文件,並在.java文件中重新創建該類。這解決了我的問題。不幸的是,我又遇到了問題,這次它是一個嚴重依賴於grails框架的控制器,所以解決方案不是一種選擇。除了在.groovy文件之外,另一個相似之處在於代碼在if語句中斷開。

我的下一個步驟:

  • 驗證應用程序不會被使用打印功能,可監控實際的執行流來執行我看到的代碼。
  • 註釋掉整個函數並重新添加一行一行的功能,以查看是否可以看到它是什麼打破它。
  • 刪除.groovy文件,並將其重新創建爲另一個.groovy文件。

任何幫助表示讚賞,因爲我無法找到任何答案在線我會繼續更新這個問題,因爲我瞭解更多。

+0

更新: 我驗證了正在執行的代碼與正在執行的代碼不同。詳情here。具體來說,調試器在代碼塊結束時停止的地方只是一種幻想。 現在我正在通過忽略調試器中的異常跳轉來解決這個問題。我已經能夠以這種方式很好地編寫代碼,但它遠非理想。 – benjaminjsanders 2013-04-05 19:38:25

+0

更新:我注意到另一個可能與Grails調試器有關的問題。我試圖通過添加一個變量來解決這個問題,然後在程序執行的不同點處打印出它的值。我發現當我清理並重新編譯程序時,聲明該變量的行沒有被執行,但調用該變量來打印其值的行正在執行。顯然這引發了一個異常,因爲調試器認爲該變量沒有被聲明。 – benjaminjsanders 2013-04-22 19:04:42

+0

我試圖通過從grails 1.3.7升級到grails 2.2.0來解決所有上述問題。升級進展不順利,此時應用程序非常小,所以我在grails 2.2.0中創建了一個新項目,使用正確的名稱創建了空類,然後粘貼了舊代碼的邏輯。其效果是消除所有先前存在的問題區域和調試器錯誤,但是同樣的問題也在新項目中出現,只是在代碼中的不同位置。 – benjaminjsanders 2013-04-22 19:07:30

回答

1

請參閱我對jira issue that you raised的評論。您發現Groovy編譯器存在問題,以及它如何計算行號。這不是執行錯誤的類文件或使用損壞的調試器的問題。調試器正在執行它預期的操作。編譯器提供的是錯誤的行號信息。

如問題所述,下一步是提供一個簡單的項目來重新創建該錯誤。我試圖自己做,但不能。所以,請提供我們可以使用的東西。然後我們可以通知groovy編譯器團隊。