当我调试托管的多线程代码时,我正处于Main \ UnitTestRunner线程的断点处并偶尔开始单步调试,调试器将切换到另一个线程并开始踩它的代码。我怎么能阻止这个?
如果重要的话,使用VS2010 + Resharper 5.1。
更新1:
在单步(F10)命令之后仔细查看堆栈会显示在调试器决定停止执行之前实际执行了许多(10-30)步骤。
这种情况经常发生,使调试几乎不可能。这与汉斯提到的issue非常类似。
更新2:
我在Microsoft Connect上提交了bug。如果你也遇到这个问题,请“upvote”。
更新3:
确认M $是在下一个“服务版本”中修复的错误。解决方法是按照here所述将单元测试定位到.NET 3.5。
答案 0 :(得分:7)
您可以转到线程视图并冻结其他线程。
调试 - > Windows - >线程
然后右键单击要冻结的线程并选择冻结。如果希望再次使用该线程,请右键单击该线程并选择解冻。
答案 1 :(得分:0)
除了Brian的回答 - 如果你的线程中的代码没有重叠,你可以点击你要停止的下一行并点击“Run to Cursor”
答案 2 :(得分:0)
如果您使用的是64位操作系统,请确保将调试器设置设置为默认为64位进程。在 Debug - >下选项和设置 - > TestDriven.Net - >一般,确保“任何CPU测试”设置为在64位进程中运行。