当我在Visual Studio中进行调试时,出于某种原因在调试某个线程时,Visual Studio将跳转到不同的线程。如何让Visual Studio在调试时留在一个线程中?
如何更改为行为,以便它位于相同的线程?
当我在Visual Studio中进行调试时,出于某种原因在调试某个线程时,Visual Studio将跳转到不同的线程。如何让Visual Studio在调试时留在一个线程中?
如何更改为行为,以便它位于相同的线程?
通常,我通过右键单击线程面板来冻结其他线程。我不知道这是否理智。
这是默认的,因为在调试器中运行程序不应该改变程序的结果,我认为。
当程序正在运行时,它会不断地在线程间切换,所以如果调试程序没有这样做,程序的行为会有所不同。
在任何情况下,我知道阻止它的唯一方法是打开线程窗口,右键单击除当前线程之外的所有其他线程,然后选择freeze
。 (请记住thaw
之后)
当你说,“当调试某个线程时,Visual Studio会随机跳到不同的线程”,你的意思是说,当你在特定的线程上通过代码时,你可能会在另一个线程上打断点?
如果是这样,你可以使用线程窗口“冻结”线程以外的其他您感兴趣的调试之一:
从http://msdn.microsoft.com/en-us/library/w15yf86f.aspx:
从线程窗口,您可以设置 活动线程。此外,您可以冻结或解冻每个线程的执行 。冻结 阻止执行线程。 解冻使它能够继续。两个 垂直蓝条表示线程冻结 。
对此的支持可能取决于您拥有的Visual Studio版本(例如,我认为Express版本不支持线程窗口)。
这里所有的答案都是关于冻结线程的,但是当它们有很多时候会变得很麻烦,而且你不知道哪一个会冻结。我发现一个更简单的伎俩
当一个断点由线程我打,并说Ĵ,ķ,等会打相同的一段时间,然后暂时禁用断点并开始调试线程我 。我发现调试器不会跳转到其他线程,因为对于那些线程来说,没有任何断点可以进入。完成调试后启用断点。
这是有道理的......但不会改变它非常讨厌的事实。 :)如果MS添加了一个配置选项,以便在断点处于当前线程内时保持在当前线程中,这将对调试有帮助......这样,可以调试当时正在执行的逻辑,而不会出现繁琐和相关的问题调试带有冻结线程的程序时滞后。 – Jon 2015-01-07 19:22:59