Debug.Assert有时不起作用

时间:2011-06-03 10:07:57

标签: c# visual-studio debugging

我在函数

中有一个Debug.Assert ine有以下问题
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部分) - 我不是要求查看这是否正确:)

除了设置断点之外,这是不一致的,然后似乎每次都正确地抛出断言。

有什么想法吗?

1 个答案:

答案 0 :(得分:6)

此行为与VS2008 SP1中的调试器中的问题相匹配。已发布a hotfix。它在VS2010中重新出现,它的SP1再次修复了它。已知修补程序和SP1都非常稳定并处理调试器问题,我强烈建议您安装它。