我在函数中的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次)。

(由于ReportColumnTitle.BreakOnGenerate也位于#if DEBUG部分中,因此存在#if DEBUG)-我不要求对此是否正确的看法:)

除了设置断点之外,这并不一致,因此断言似乎每次都正确抛出。

有任何想法吗?

最佳答案

此行为与VS2008 SP1中的调试器中的问题匹配。为此发布了a hotfix。它在VS2010中重新出现,其SP1再次对其进行了修复。众所周知,此修补程序和SP1都很稳定,可以解决调试程序问题,我强烈建议您安装它。

09-30 19:08
查看更多