回答

3

通常,我通过右键单击线程面板来冻结其他线程。我不知道这是否理智。

6

这是默认的,因为在调试器中运行程序不应该改变程序的结果,我认为。

当程序正在运行时,它会不断地在线程间切换,所以如果调试程序没有这样做,程序的行为会有所不同。

在任何情况下,我知道阻止它的唯一方法是打开线程窗口,右键单击除当前线程之外的所有其他线程,然后选择freeze。 (请记住thaw之后)

+0

这是有道理的......但不会改变它非常讨厌的事实。 :)如果MS添加了一个配置选项,以便在断点处于当前线程内时保持在当前线程中,这将对调试有帮助......这样,可以调试当时正在执行的逻辑,而不会出现繁琐和相关的问题调试带有冻结线程的程序时滞后。 – Jon 2015-01-07 19:22:59

19

当你说,“当调试某个线程时,Visual Studio会随机跳到不同的线程”,你的意思是说,当你在特定的线程上通过代码时,你可能会在另一个线程上打断点?

如果是这样,你可以使用线程窗口“冻结”线程以外的其他您感兴趣的调试之一:

http://msdn.microsoft.com/en-us/library/w15yf86f.aspx

从线程窗口,您可以设置 活动线程。此外,您可以冻结或解冻每个线程的执行 。冻结 阻止执行线程。 解冻使它能够继续。两个 垂直蓝条表示线程冻结 。

对此的支持可能取决于您拥有的Visual Studio版本(例如,我认为Express版本不支持线程窗口)。

4

这里所有的答案都是关于冻结线程的,但是当它们有很多时候会变得很麻烦,而且你不知道哪一个会冻结。我发现一个更简单的伎俩

当一个断点由线程打,并说Ĵķ,等会打相同的一段时间,然后暂时禁用断点并开始调试线程 。我发现调试器不会跳转到其他线程,因为对于那些线程来说,没有任何断点可以进入。完成调试后启用断点。

相关问题