簡體   English   中英

如何在第三方庫中的 Eclipse 中設置斷點?

[英]How to set a breakpoint in Eclipse in a third party library?

我在來自第 3 方庫的類中收到 NullPointerException。 現在我想調試整個過程,我需要知道該類是從哪個對象中保存的。 但在我看來,我無法在第 3 方的類中設置斷點。

有誰知道擺脫我的麻煩的方法? 當然,我使用 Eclipse 作為我的 IDE。

更新:該庫是開源的。

您可以輕松地在第三方庫中設置方法斷點,而無需使用源。 打開課程(你會得到“我沒有來源”的觀點)。 打開大綱,右鍵單擊所需的方法,然后單擊“ Toggle Method Breakpoint以創建方法斷點。

最有把握的方法(並最終得到實際有用的東西)是下載源(你說它是開源的),並設置另一個指向該源的“Java項目”。

為此,請在您的系統上的某個位置下載並解壓縮源代碼。 單擊“文件” - >“新建” - >“Java項目”。 在下一個對話框中,為其指定項目名稱,然后選擇“從現有源創建項目”。 瀏覽到開源庫的根位置。

假設項目所需的所有其他庫都包含在您下載的項目中,Eclipse將會解決所有問題,並為您設置構建路徑。

您需要從項目的構建路徑中刪除開源jar,並將此新項目添加到項目的構建路徑中。

現在,您可以將其視為您的代碼,並隨意調試。

這至少解決了其他方法的幾個問題:

  1. 你可以“附加源代碼”到jar文件,但如果jar文件是在沒有調試信息的情況下編譯的,那么這仍然無效。 如果jar文件是使用調試信息編譯的( lines,source,vars ...請參閱http://java.sun.com/j2se/1.3/docs/tooldocs/win32/javac.html-g選項)。

  2. 您可以添加一個“異常斷點”來查看何時引發NullPointerException,但這是一個常見的異常,並且很可能會在您正在尋找之前提升並處理許多(數百?)次。 另外,如果沒有原始資源,您將無法真正看到有關拋出NullPointerException的代碼的任何內容 - 您將能夠找出錯誤的可能性非常低。

您還可以在特定異常上設置斷點。 從Debug透視圖中,有一個“添加Java異常斷點”按鈕,您可以在其中添加“NullPointerException”。 一旦引發此類異常,您的調試器就會暫停執行。

只需附加源(或使用自動附加源jar的東西)然后通過雙擊感興趣的行的左側以正常方式設置斷點。

為了使用maven物化Web應用程序,我必須做三件事。

1)使用第三方jar的源代碼創建一個新的eclipse項目。

2)從pom.xml依賴項中刪除對jar的引用。

3)在項目屬性中將新的eclipse項目添加到Deployment Assembly。

4)將新的eclipse項目添加到項目屬性 - > Java構建路徑 - >引用第三方項目的現有項目的項目。

如果第3個項目已經正確地添加到您的maven存儲庫中,那么maven將自動下載相應的源代碼,並允許您添加斷點,而無需執行上述任何步驟; 但是,我了解到你不能總是指望這一點。

通常,您應該能夠設置斷點。 特別是如果第三方庫是開源的。 但是,如果您的第三方lib來自商業供應商,他們可能已經關閉了調試標志來編譯源。 這將使您無法調試它。 您的供應商可能已將此作為混淆過程的一部分,以使其無法對庫進行反向工程,或僅僅因為最終編譯的類將更小。

在 Maven 項目中,您可以輕松地在項目資源管理器視圖中打開 Maven 依賴關系樹視圖,並查看項目所依賴的 jar 文件列表。 打開項目資源管理器,然后展開您的項目。 然后,查找 maven 依賴項並展開此樹視圖。 現在,您可以展開任何 jar 文件並查看可用類的列表,並在其中任何一個上按 Enter 鍵,Eclipse 將為您反編譯源代碼,您可以設置斷點。 如果你的項目有子 maven 模塊項目,你應該在你的模塊中查找依賴項。 我推薦安裝Enhance class decompiler plugin ,這樣你就可以不用源代碼輕松調試你的項目,或者你可以為eclipse指定源以避免調試時找不到源。如果第三方jar文件的源已經在eclipse中作為項目打開,你無法在 Maven 依賴項部分展開它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM