我的 Visual Studio 2008 IDE 在调试单元测试时表现非常奇怪:我设置了一个断点,当我命中它并尝试使用 F10 进行步进时,测试就会结束。如果我在被测试方法内的每一行上设置断点,我最终会停留在其中一个随机的位置,而不是下一行的位置。我已经在干净的系统重新启动后清理和重建了解决方案,但这种行为仍然存在。还有其他人遇到过这种情况吗?是否有结论得出。
此测试仅使用主执行线程(没有创建额外的线程)。
我的 Visual Studio 2008 IDE 在调试单元测试时表现非常奇怪:我设置了一个断点,当我命中它并尝试使用 F10 进行步进时,测试就会结束。如果我在被测试方法内的每一行上设置断点,我最终会停留在其中一个随机的位置,而不是下一行的位置。我已经在干净的系统重新启动后清理和重建了解决方案,但这种行为仍然存在。还有其他人遇到过这种情况吗?是否有结论得出。
此测试仅使用主执行线程(没有创建额外的线程)。
如果你调试的是发布版本(因为行被优化了),就会出现这种行为。
如果我不小心在调试其他地方的旧exe文件(由项目配置设置),而不是最近构建的文件,也曾经发生过这种情况;^)
当您有多个线程运行时,也会出现此行为。
你是否将断点放在生成类的一部分代码中?
我曾在服务引用的客户端遇到过这个问题。生成的类是带有部分类的。
[System.Diagnostics.DebuggerStepThroughAttribute()]
应用属性。即使我的断点在不同的文件中,但仍然属于属性类的一部分,断点也会被跳过。
我从生成的 Reference.cs 文件中删除了该属性,调试器就像我预期的那样工作。
当然,这不是一个永久性的解决方案,因为如果 Reference.cs 文件重新生成,属性将会重新出现。
进入项目->属性并取消选中 "优化代码"
如果您看到像DataSet ds = new DataSet();这样的代码在调试器上被触发,但像string Test = "Test";这样的代码被跳过,则应采取此步骤。
也许回复有点晚了,我在VS2012中遇到了同样的问题。要解决这个问题,请检查菜单Test>TestSettings>“LocalTestRun.TestRunConfig”是否被选中,如果被选中,请取消选中它,这样就不会跳过代码行了。对于Vs2008也可能适用。