簡體   English   中英

eclipse的檢查功能像一個虛擬道具一樣欺騙我,為什么在調試時似乎那么棘手?

[英]Inspect function of eclipse tricks me like a dummy, why does it seem to be that tricky while debugging?

Eclipse對於編寫Java程序非常有用,但是今天我發現,欺騙像我這樣的新程序員真是太棒了。 @ _ @

我寫如下代碼

public static void main(String[] args) {
    for(int i=0;i<3;i++){
        System.out.println("i = " + i);
    }
}

然后在“ System.out.print ....”行添加一個斷點,單擊“調試”按鈕,蝕轉到“調試”透視圖,並突出顯示該斷點行,然后將光標移到變量上“ i”,其值是預期的“ 0”。

然后,選擇“ i ++”並單擊“檢查”(或按“ Ctrl + Shift + I”)一次,將光標移到變量“ i”上,其值更改為“ 1”。 再次重復“檢查”,i的值更改為“ 2” ......(每次單擊“檢查”時,其值將加1)!

為什么會這樣呢? 我只想觀察“ i”的值作為調試的依據,在進入下一條語句之前,不要真正更改它的值。 我認為“檢查”以及“顯示”僅用於查看變量/表達式,它們不應影響值,但是在這種情況下,它不能按我預期的那樣工作。

誰能告訴我出了什么問題?

My eclipse version info:
Version: Indigo Service Release 2
Build id: 20120216-1857

選擇“ i ++”,然后單擊“檢查”

如果檢查表達式,則eclipse必須執行該表達式,以便獲取值。 因此,如果您檢查i++ ,則eclipse會向i添加一個。

這樣考慮:如果不是i ++,而是檢查了myFunction(i) ,您希望eclipse執行函數“ myFunction”來獲取值嗎? i++相同。

在eclipse中,如果您檢查一個表達式,則Eclipse執行該表達式並為您提供結果。
因此,在您的情況下,如果您檢查i++則蝕執行它並增加i的值。 運行此命令將使i值遞增。

如果您擔心在調試時顯示/顯示值,並且希望確保不影響該值,則應選擇變量或表達式並使用“監視”選項。

這將跟蹤變量/表達式的值而不執行,僅在每次運行時更新新值。 我認為這是最安全的方法。

正如Pablo所提到的,它必須評估代碼以便告訴您它返回什么值。 您可以改為將手表放在“ i + 1”上,這將為您提供所需的值,而不會帶來您不希望的副作用。

基本上,您需要知道任何啟動的副作用,無論是從“主”代碼還是從調試工具。 正如Erhannis提到的,這有時在調試代碼時修改值非常有用。 (例如,在實際調整代碼之前,您可以驗證調整/修復確實有幫助。)

您原本希望有一個“隔離區”,但這很難做到,尤其是在面向對象的上下文中,其中許多對象鏈接到許多其他對象。 並行運行整個事情有時可能會起作用,但是您將失去上面的調整能力。 在任何情況下,您在爭奪資源時都會遇到很多問題; 例如,兩個副本都試圖讀取/寫入特定文件,例如日志文件。 同樣,兩個執行路徑可能會有所不同,從而導致錯誤/錯誤的監視值。

因此,在這里預防這種副作用並不是真正可行的選擇,反而很少有用。 只期望手表可以反映並影響代碼執行。

暫無
暫無

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

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