2010-05-18 78 views
31

在調試時可以跳過Eclipse中的語句嗎?假設進程在斷點處停止,我想跳過斷點行(或者可能在下面幾行),我可以這樣做嗎?在調試選項卡上,它只有「進入」,「跳過」和「逐步返回」按鈕。如何在調試過程中跳過Eclipse中的語句

我沒有谷歌周圍,但找不到任何東西,希望我可以在這裏找到答案。

+0

by'skip'你的意思是過去而不是執行? – akf 2010-05-18 22:44:21

+3

是的,我希望它們不被執行 – 2010-05-18 22:53:03

+0

也許你應該舉一個你想在調試過程中跳過的例子嗎? AFAIK,Java不支持「skip line」AFAIK。典型的方法是使用'if(debug){do_stuff; }' – nevets1219 2010-05-19 00:05:15

回答

12

如果您正在調試,您可以註釋掉您想要跳過的行,然後重新編譯,這會使代碼變得更加熱門,並使您保持在當前所在的方法中,從而可以跳過該行。

根據您希望發生的情況,您可以簡單地在想要跳過的行後執行該行,選擇代碼並從r-click菜單中選擇Display。這將執行選定的代碼並在彈出窗口中提供結果。

5

您可以設置斷點條件來確定此斷點是停止還是繼續。我不知道有什麼方法可以讓你告訴它跳過接下來的幾行沒有代碼更改爲類似:

if (!skip) { 
    // contents to be skipped 
} 

,然後在設置斷點skip爲true。

對於斷點條件,如果return true將停止並且return false將繼續。在這裏,您可以實際執行代碼並執行任何您想要的操作(包括設置skip的值)。

+0

雖然這是一種方法,但它需要一些額外的工作來編譯源代碼並將類添加到classpath中。 – 2010-05-18 23:45:38

+1

您不需要向類路徑添加任何內容。在代碼中可用的所有東西都可以在斷點條件下使用。 Eclipse可能在幕後做了一些事情,但我們都不必擔心這一點。還據我所知,我可以在執行過程中更改斷點條件而不會導致完全重建。 – nevets1219 2010-05-18 23:58:48

+0

在我的情況下,WLS服務器正在運行我正在嘗試調試的jar文件。而且Eclipse連接到服務器的調試端口,如果我更改源代碼,它將與運行時jar文件不同步。我試過這個,但沒有奏效。 – 2010-05-19 00:30:58

2

您可以隨時更改將要調用其模擬版本的方法的類的值。

你可以在Variables面板上點擊它並選擇Change Value。在窗口中你就可以輸入類似:

new SomeClassMock() 

當然這是假設你有模擬類已經在你的classpath然而,你當然可以創建一個裝滿的(這聽起來像你不知道。)您需要的Mock類,並將其推送到Tomcat共享庫中,以便您可以訪問它。不知道這是否有效,但你明白了。

3

我有一個類似的問題,我想跳過一些代碼,以便我可以在代碼中稍後獲取方法調用的結果。我忘記了當你在調試時,你可以隨時創建表達式並對它們進行評估。在Eclipse中有一個「表達式」選項卡,您可以在其中輸入要評估的任何表達式(即方法調用)。

這意味着我不必跳過這些界限,因爲只要我輸入適當的方法,就可以評估我想要的內容。

+0

你也許可以使用這種方法解決大多數用例...但是如果執行行引發異常..也許一個hibernate調用應該返回一個字符串「hello」,所以我在方法執行後修改字符串,但是方法拋出例外.. – mickeymoon 2013-12-23 10:57:06