簡體   English   中英

在Eclipse中調試Java會立即停止而不會出現斷點

[英]Debugging Java in Eclipse stops without a breakpoint

我想調試包含兩個最簡單類的非常簡單的代碼。

package test.pack;

public class TestClass {

    public static void main(String[] args) {
        TestClassTwo tc2 = new TestClassTwo();
    }

}

==================================================

package test.pack;

public class TestClassTwo {

    public TestClassTwo() {
        System.out.println(this);
    }

}

==================================================

因此,當我在類TestClassTwo的初始化上打開斷點並通過[F11]和[F5]運行調試時,我應該進入TestClassTwo的構造函數。 但是,不是在我未設置任何斷點的地方點擊此斷點。 如圖所示

我在[適用於Java EE開發人員的Eclipse IDE]和[適用於Java開發人員的Eclipse IDE]上進行了嘗試,我也從官方Oracle網站下載並安裝了最新版本的JDK。

但是有一個限制,就是我應該根據業務方面的技術任務在我的項目中使用Java版本1.7。

我試圖使用無中斷的Eclipse命中主題中的解決方案-Eclipse ,但是它沒有幫助。

接下來,我附上屏幕快照,可以以某種方式幫助解決我的問題。

項目設置中的Java庫

在Eclipse的首選項中安裝了JRE

Java版本的cmd

環境變量中的系統變量

環境變量中的系統變量也

Windows版本

您試圖輸出此內容,這意味着對該對象進行了引用,但是嘗試從構造方法中調用該方法,從而創建了該對象。 嘗試在另一個方法的構造函數之后調用此代碼。

調試可能由於空引用異常而崩潰,這導致了調用堆棧中的錯誤,這就是程序立即崩潰的原因。

首先,到目前為止,您已進行了所有糾正。

如果您想這樣稱呼,則在單擊F5時會出現“錯誤”。 現在,此命令稱為step into ,這意味着它將在下一個更深的堆棧層繼續執行。

從代碼中,您假定這將是TestClassTwo的構造函數,但是在Java調用構造函數之前,它首先必須初始化類本身,而這正是圖片中的Debug View所指示的。

附帶問題:您是否多次按F5鍵以深入了解ClassLoader.loadClass()


對於當前執行,您可以在Debug View中選擇倒數第二行,即

Launcher$AppClassLoader(ClassLoader).loadClass(String) line: not available

然后按F7 這將從相應的方法中跳出來 ,在上一個堆棧層上繼續執行,然后在該堆棧層上調用TestClassTwo的構造函數。


為了將來的調試,您可能需要熟悉Step Filtering 步驟過濾器使您可以從調試中排除代碼的某些部分。 它們將被執行,但是Eclipse將自動“跳過”它們。

在相應的首選項頁面Java > Debug > Step Filtering ,eclipse方便地提供了一個選項,用於分別啟用和禁用java.lang.ClassLoader step過濾。

暫無
暫無

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

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