2010-11-11 56 views
1

this MSO bug report,我們自己的華夫餅作如下觀察:斷點的位置如何影響錯誤的可查找性?

此錯誤也恰好是一個heisenbug,調試它的時候,如果你的第一個斷點太早,通過步進顯示,一切都很好。

(參考文獻:維基百科的entry on Heisenbugs

如何它甚至有可能爲斷點的位置做出是否出現的錯誤有區別嗎?

(是的,我知道維基百科的文章回答了這一點,但我認爲這會是這麼有答案,一個很好的問題,我敢打賭SO可以做的更好反正。)

回答

2

如果有任何異步活動正在進行,那麼這可能會影響heisenbugs。例如線程,I/O,中斷等等。在不同位置設置斷點會影響主線程和異步事件的相對時序,從而可能導致相關的錯誤出現或消失。

2

公共源極是定時,特別是具有多個線程。

比方說你有一些事件處理程序的GUI應用程序,其中一個表選擇不正確處理的錯誤,也許是因爲搖擺有時開始更新表之前的處理您的活動。

通過在斷點處暫停線程,您可以更改該表組件接收事件的順序,因此你可能會看到不同的結果有和沒有斷點。這是一個非常普遍的問題,其中一件事情可能會讓很多事件調試複雜的GUI應用程序非常痛苦。