2011-06-03 140 views
2

,我有以下問題與Debug.Assert的INE在功能Debug.Assert的,有時不工作

public override ReportErrorLevel GenerateResults(bool reformat) { 
... 
    for (int Col = MinResultsCol; Col < MaxResultsCol + 1; Col++) { 
     try { 
     ReportColumnTitle ColTitle = ColumnInfo[Col]; 

     #if DEBUG 
     Debug.Assert(ColTitle.BreakOnGenerate, "..."); 
     #endif 

     ... 
     } catch ... 
    } 
} 

我用這個,這樣我可以在列設置的值,然後運行報告,當系統到達列時就會中斷。當我在循環之前設置一個無條件斷點,然後運行一旦到達,然後捕捉斷言(在這種情況下是循環中的第15次),但是當我沒有捕獲到這種情況時,我得到了這種情況。

(在#if DEBUG是存在的,因爲ReportColumnTitle.BreakOnGenerate也是在#if DEBUG段) - 我不要求對是否正確:)

視圖這不是比有一致的其他設置斷點,則斷言似乎每次都會正確拋出。

任何想法?

+3

線程涉及到這裏嗎? – 2011-06-03 10:11:28

回答

6

此行爲與VS2008 SP1中的調試器中的問題相匹配。發佈了a hotfix。它回到了VS2010,它的SP1再次修復了它。已知修復程序和SP1都非常穩定並且注意調試程序問題,我強烈建議您安裝它。

+0

謝謝,雖然修補程序沒有具體提及我發現的症狀,但有足夠的相似性值得一試。 – GalleySlave 2011-06-06 06:57:33

+0

我安裝了修補程序,它沒有幫助。 微軟的Visual Studio 2008 版本9.0.30729.1 SP 的Microsoft .NET Framework版本 3.5 SP1 安裝版:專業 的Microsoft Visual C#2008 91605-270-8137934-60076 的Microsoft Visual C#2008 修補程序爲Microsoft Visual Studio 2008專業版 - ENU(KB967631)KB967631 – 2011-10-20 15:53:08

+0

我與VS2008的相同版本有同樣的問題。我已經安裝了修補程序,但它沒有幫助。我可以運行我的程序兩次,一次它會斷言,而另一次它不會,儘管沒有什麼變化。有沒有人知道是否有修復這(工程)? – Dave 2012-07-25 13:59:15