2014-10-22 65 views
1

Eclipse支持在條件爲真時在特定行中斷開的條件斷點。Eclipse Java Conditional Watchpoint

它還支持在給定變量被訪問/修改時立即中斷的觀察點,而不管導致修改的行。

我將如何創建一個條件觀察點,使其在給定變量被修改的任何一行中斷開並且條件爲真?

例如:設定在變量X中的MODIFY觀察點,使得其僅當X被設置爲一個值分解> 1000

編輯: 說一個字段可以從許多不同的方法在不同的改變,有可能包。當條件成立時,可以想象在這些位置的每一個處創建條件斷點來斷開。然而,這個變量被觸及的地方的數量可能很多,並且使得斷點的效率相當低(從人的角度來看)。另一種選擇是觀察點,無論在代碼中修改了哪個位置,該觀察點都會自動在任何時候修改該字段。但是,我不知道只有在滿足條件時纔會讓觀察點中斷。

+0

因此,僅僅測試變量是否是「> 1000」是不夠的。你能夠修改代碼嗎? – munyul 2014-10-22 07:06:25

+0

重複:https://stackoverflow.com/a/2302945/1367192 – dds 2014-10-22 07:07:47

+0

@dds我不這麼認爲,因爲條件斷點必須設置在特定的行。我想要的是相當於在所有導致修改特定變量的行上設置條件斷點。 – arcyqwerty 2014-10-22 07:29:34

回答

1

在這種情況下,爲什麼不只是創造條件斷點「暫停時真」,並把作爲條件

X > 1000 && (your other condition) 
+0

因爲我不知道在哪條線上它會成爲真(在許多文件/方法中) – arcyqwerty 2014-10-22 07:17:34

+0

@arcyqwerty,所​​以值的變化可能會在代碼中發生_anywhere_?所以,基本上你試圖找出它發生的地方? – munyul 2014-10-22 07:19:33

+0

是的,代碼中的變量被修改,使得條件成立。查看有關問題的附加說明。 – arcyqwerty 2014-10-22 07:27:38

0

我不知道,如果你想要的斷點選項中是可以或不可以 - 但一簡單的解決方法是:

要添加一個保存origianl值的新變量,然後使用它創建一個帶有您想要的影響的斷點檢查。

int originalValue = value; 

然後斷點內:

value != originalValue && value > 1000 

那麼這斷點將當值改變觸發,它是大於1000

編輯: 如果你想找到隨機在您的代碼中可能會發生此類變化的位置,則只有一種方法,我會建議:

使問題變量private和強制全部對它的引用確實經歷了getter/setter方法。然後你只需要給setter方法添加一個斷點,那麼你很快就會找到你要找的東西。

+0

這需要在特定地點設置斷點,並且不會立即在可能修改變量 – arcyqwerty 2014-10-22 07:19:33

+0

@arcyqwerty的所有語句上突破,您需要更清楚地編寫問題! – munyul 2014-10-22 07:21:41

+0

爲了更清晰地更新它以防止觀察點要求不明確... – arcyqwerty 2014-10-22 07:24:30