10

我正在研究C#和Silverlight項目,每隔一段時間我遇到一個問題,在調試時斷點不再受到影響。在編輯器中,它們沒有變成透明的,所以我知道正確的代碼被加載並正在運行。在VS10中調試時未觸及斷點

一個例子是:

我有Value與getter和setter和它被綁定到的控制。當我在setter中放置一個斷點時,我從控制中更改了Value的值,斷點沒有被擊中。

我知道IIS重置修復了這個問題,但我想知道原因。其他人是否也有類似的行爲?如果任何人能夠指出我可能的原因的方向,將不勝感激。

回答

8

有一個在Visual Studio 2010中的一個選項:

  • 工具 - >選項...
  • 調試 - >常規
  • 「步驟在性能和運營商(僅限託管)」

確保沒有選中。這假設斷點是一個堅實的紅色圓圈,表示VS已經找到它的調試符號。

或者,這些代碼元素可以用各種調試屬性之一進行修飾,即DebuggerStepThroughAttributeDebuggerNonUserCodeAttributeDebuggerHiddenAttribute。這些可能會阻止調試器進入方法,即使有斷點。

當然,如果您正在調試的代碼已經過優化,它可能看起來像是缺少行。我不確定會發生什麼,如果你試圖斷開已經優化過的線。

如果斷點已經空洞(不是純紅色),那麼Visual Studio可能找不到代碼的調試符號。

如果復位修復該問題,或許還有正在調試的代碼和原始源文件/符號之間的差異,還有就是讓這個不太嚴格的選項:

  • 其選項面積以上。
  • 「要求源文件與原始版本完全匹配」
+0

這是我所想的。感謝有關設置的信息。很確定這應該照顧它。 –

0

我最近有這個問題。雖然我沒有找到確切的原因,但一個簡單的解決方法是檢查應用程序是否以調試模式運行(而不是發佈)並清理/重建解決方案。

+0

我知道這不是問題。首先我每次檢查。不過謝謝。 –

1

很多時候我面對這個問題,雖然在winforms應用程序。我做的簡單的事情是,重新啓動VS之前清理和重建解決方案。然後,如果沒有任何結果,只需刪除bin目錄並重新進行重建。我做的最後一個選項是重啓機器。

0

發現這個問題而努力,而試圖在VS2010

解決它通過查看下高級編譯選項項目屬性,設置生成調試運行代碼來了解爲什麼我自己的項目的斷點沒有被擊中信息全部。

值得一提的是,我希望通過右鍵單擊我希望調試的函數,使用非常方便的TestDriven.net的「Test With - > Debugger」進行調試。

相關問題