我使用的方法稱爲最近幾萬次開始拋出異常。在大多數調試環境中,我會在此方法的頂部設置一個斷點,然後繼續運行,直到遇到我感興趣的調用觸發異常的參數值。在這種情況下這將是不切實際的,所以我試圖設置一個斷點,只有當該參數值出現時纔會斷開。我在下面的位置創建了一個斷點,並給它一個條件str == "OffendingValue"
。Visual Studio在使用斷點條件進行調試時行爲異常
class Foo
{
// Bar() is called many, many times
void Bar(string str)
{
try
{
// Breakpoint inserted here
...
}
catch (Exception ex)
{
...
}
}
}
令我驚訝的是,這樣做導致Visual Studio和我的應用程序在調試模式下停止工作。我的應用程序啓動並輸出一些簡單的日誌消息,但後來完全停止響應由於需要做更多的工作來監控斷點狀況,因此思考Visual Studio可能會稍微慢一點,我離開辦公桌15分鐘讓它有一段時間運行。當我回來時,沒有任何變化。我可以通過刪除斷點並以相同的條件重新創建條件來重現條件。最奇怪的是,當我有這個有問題的斷點時,Break All調試命令(通常會破壞當前正在執行它是否是斷點的語句上的程序執行)不會執行任何操作。
有沒有人遇到與Visual Studio斷點條件類似的行爲?我能夠毫無問題地使用命中計數條件。
這種方法在長時間的操作系列中取代了調用堆棧。我雖然沒有單獨爲這種方法編寫單元測試,但也許這是一個好方法。一個工作條件斷點將是最簡單的方法,這就是爲什麼我很好奇VS爲什麼不工作。 – Chris 2008-11-13 22:08:58
我也發現一些VS的調試功能遇到問題時,他們被擊中太多次。我認爲VS只是落後於評估。因此,解決方法;) – 2008-11-14 14:31:07