2016-11-23 59 views
2

我正在使用IntelliJ IDEA 14.1.5來逐步調用第三方jar(JTidy)中調用方法的Java程序。IntelliJ IDEA將不會步入第三方jar中的方法

這個罐子的來源是附加的;如果我突出顯示其中的一種方法並按ctrl-B進入其聲明,則IDEA會正確進入。

我在這個方法中設置了一個斷點,在我知道正在執行的語句上。

我已關閉全部在設置>構建,執行部署>調試器>步進下的步進過濾器。

步入JCL中的方法(如java.lang.String.append())可正常工作。

但是,進入這個第三方jar無法正常工作。即使強行進入也不起作用。該代碼中的斷點也不起作用;整個方法被視爲Step Over,這意味着我無法看到我需要檢查的過程中的確切點。

我必須檢查才能使其工作?可能的情況是,附加源代碼不一定會啓用該代碼的調試,除非至少有one other answer on another SO question that suggests that this should work。所以在IntelliJ's documentation on debugging中有一個提示。

+1

提示:我認爲這樣的特定產品bug類型的問題在這裏很少得到很好的答案。我寧願建議轉而使用一些JetBrain論壇或bug追蹤器。你看,最終IntelliJ是一些產品所擁有的產品,這些產品可能具有以下幾點:A)更多的洞察力B)充足的動力C)用於修復**潛在錯誤的手段。 – GhostCat

+0

公平點。我在這裏問的一個原因是希望它不是產品特定的,不是bug,而是我缺少的一些一般細節。 ...例如,我堅信這個jar沒有編譯時打開了調試信息;然而,我給人的印象是,這不會阻止調試器進入那裏 - 例如,IDEA 13和更高版本顯然能夠進行一些有教育意義的猜測,因爲它有字節碼和源碼。 –

回答

0

我試着在jTidy代碼中使用下面的代碼放置一個斷點:https://github.com/ajorpheus/simple-maven-testbed(具體地說是this commit)。

的IntelliJ生成信息:

IntelliJ IDEA 2016.3 
Build #IU-163.7743.44, built on November 17, 2016 
JRE: 1.8.0_112-release-408-b2 x86_64 
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o 

我使用的依賴是:

<dependency> 
     <groupId>jtidy</groupId> 
     <artifactId>jtidy</artifactId> 
     <version>r820</version> 
    </dependency> 

而且我有斷點沒有問題,如下圖所示被打: enter image description here

我想值得注意的是,您的帖子中的文檔鏈接適用於v。2016.2版,而其他鏈接最近爲2016年8月。我的fi第一印象是這可能與您正在使用的Intellij IDEA版本有關,但是,this似乎表明,在14.1.5中也應支持加入反編譯的第三方代碼。

是否值得您用您的Intellij版本檢查我的代碼?

+0

謝謝你的試用,但我現在認爲這只是一個沒有打開調試信息而發佈的第三方jar包的例子(你可能已經注意到我之前的評論)。Sheepishly,我必須承認,我沒有看到第三方的罐子這麼長時間以至於我忘了它看起來像什麼,IDEA並沒有真正幫助提醒我...... –