2011-11-09 37 views
3

我正試圖切換到Intellij,但是當我加載我的項目時,調試器似乎跳過了行,並且在我試圖通過時未跟蹤實際源。我知道這是一個模糊的問題,但有誰知道導致Intellij在調試時不正確地鏈接到源代碼的問題?如何解決Intellij調試問題?

+0

沒見過這種行爲,你嘗試過一個完整的清潔和重建 –

+1

你跟蹤你自己的源代碼,或一些圖書館的來源問題可能是在同一個庫的幾個版本?類路徑 –

回答

2

我能想到的唯一的事情是當前編譯的類與您用來調試的源不匹配。 在這種情況下會發生什麼情況是,IntelliJ(或任何其他IDE)從類中獲取調試信息(例如行號),然後將其映射到您正在查看的當前源,以向您顯示代碼正在執行。

如果代碼已過時,或版本(源代碼和編譯的類)以任何方式不匹配,則可能發生已調試的信息提供IDE信息以顯示某一行,但該信息不正確給出當前的源代碼,這可能會導致看起來像被調試的「跳躍」線路或者僅僅停留在沒有多少意義的地方。

你重建了你的項目嗎?那些來自Jar類的源代碼,你確定這些版本匹配嗎?

希望它有幫助!

+0

我同意,這可能是問題 - 我會嘗試檢查運行配置上的「make」複選框(「在lau之前nch「部分)用於調試 – Guillaume

+0

@pcalcao是的你的權利,我也有類似的問題回到調試器抱怨沒有來源可以找到。它類似於啓動調試器,然後在發生不匹配時更改一些代碼。我想隨着這些傢伙建議構建項目,這將解決它。 – MalsR

0

您可以將IntelliJ配置爲使用Eclipse java編譯器,這可能會解決您的問題。從下面的鏈接:

https://youtrack.jetbrains.com/issue/IDEA-8021

「 這已經不是第一次報告有關知名老javac的問題:對於一些try/catch語句和if/else語句結構,它生成若干個字節碼指令,這是錯誤的關聯所以在跳步的時候,調試器遇到不同行號的跳轉指令並決定停止跳轉(因爲行號已經改變),javac不應該爲該指令分配不同的行號

您在Eclipse中看到的行爲不同,只是因爲它使用了自己的編譯器而不存在這個問題。如果將Eclipse配置爲使用javac進行編譯,請參閱所描述的行爲。或者,您可以將IDEA設置爲使用eclipse編譯器來解決問題(僅適用於當前EAP版本 - 構建5xxx--與eclipse編譯器集成)「

另請參閱關於配置Maven以使用Eclipse編譯器的Q:

Using Eclipse Java Compiler (ecj) in maven builds