2011-06-03 139 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