【发布时间】:2013-08-24 11:06:49
【问题描述】:
无论我是否在调试器下运行,我都在使用调试版本并在同一台机器上获得不同的结果。我正在使用优秀的 TestDriven.Net 来运行单元测试。
- 使用 TestDriven.Net 或外部 NUnit 运行器“运行”会产生相同的结果
- “使用调试器运行”与 TestDriven.Net 产生不同的结果
代码是
- 一个复杂的迭代网格变形例程,涉及在浮点精度限制下进行大量计算
- C#、VS2012 面向 .Net 3.5。
- 单线程
- 仅调试版本,未构建发布版本
- 同一台机器,没有省电\speedstep 或其他我知道的功能
- Vanilla C# - 没有不安全的代码、非托管库、平台调用等。
- 没有调试器检查代码或奇怪的第三方库
我还没有追踪到第一个差异(没有调试器就很棘手!)但是考虑到代码的迭代性,它的输入敏感和最小的差异将在足够的时间下增长到显着的比例。
我知道跨编译器、平台和架构的 fp 再现性是多么脆弱,但我很失望地发现调试器是导致这种情况失败的因素之一。
我是否必须接受这是生活中的事实,还是您可以提供任何建议?
【问题讨论】:
标签: c# debugging visual-studio-2012 floating-point testdriven.net