我有一個包含混合Java和Groovy代碼的代碼庫。對於在Groovy代碼迭代,我們傾向於使用閉包:通過一次步進一行,在strings.each()
(即println string
)執行代碼使用IntelliJ IDEA在Groovy中調試迭代(閉包)
String[] strings = ["First", "Second", "Third"]
strings.each { string ->
println string
}
當調試這一點的IntelliJ IDEA(11節)跨過。我可以在println
行放置一個斷點,我可以對其進行調試,但這是一個小解決方法,很好的避免。
是否有配置的IntelliJ不跨過Groovy閉包的方法嗎?沒有適用的選項File-> Settings-> Debugger-> Groovy。
編輯:
爲了澄清我所期望的IntelliJ做:
說我有一個Java風格的迭代是這樣的:
for (String string : strings) {
println string
}
如果我使用 「步過」,調試器步入迭代沒有問題。我可以繼續「跨越」,仍然在循環中,直到沒有更多的對象要迭代。這就是我期望像上面那樣關閉的東西。
在手動設置斷點的一個或兩個關閉的情況下,這可能不是問題。但是,如果有很多,那麼「自動」進入它們就會非常乾淨。
你在做'進入'嗎? (F7快捷鍵) – 2013-03-11 09:27:16
@Nebelmann如果我'進入'我必須逐步完成整個Groovy類的設置迭代。我終於在循環內部結束了,但到達那裏還是很麻煩。 – Magnilex 2013-03-11 09:32:39
恐怕沒有什麼可以做的,然後......據我所知,'each'是一個閉包,所以如果你跨過它將跳過整個功能,如果你介入你將不得不處理很多'噪聲',就像在Java中,當你想要進入一個Spring bean方法調用並最終在代理中進行時...在閉包的第一行設置一個斷點是我意識到的唯一解決方案。 **編輯**:我剛剛發現了IntelliJ的'調試器>步進'選項,這可能會阻止你與groovy的內部結構掙扎......這是值得給它一個嘗試:) – 2013-03-11 09:41:53