10

我正在使用VS2010 Beta 2来调试一些多线程代码。爱并行堆栈等冻结VS2010中断点上的所有线程

我有一个问题,但:我有一个断点设置在一个可能被多个线程调用的方法。一旦我达到断点,我真的想把重点放在触发该断点的线程上。然而,当我点击“step”时,VS经常切换到另一个线程(比如我停在线程1上,但与此同时,线程2会触发我的断点)。

我知道我可以手动冻结线程窗口中的线程。有没有办法自动完成 - 基本上,一旦我到达断点,冻结除当前线程之外的所有线程,直到我击中F-5?

+0

是的,这样的ha especially,特别是如果你有很多平行线程!也许请记住Kragen说的threadID,然后使用“Run to cursor”继续下一行。如果一个线程击中该线并且它的threadID不是你关注的线程,那么重复“运行到游标”,直到获得所需的线程。至少VS不会在整个节目中跳跃,并且你一直在失去焦点。 – Llyle 2010-09-01 05:38:34

回答

2

不是我所知道的,但是您可以在您逐步完成时禁用您的断点。

当我担心混淆许多线程时,我倾向于保持线程窗口打开并记录线程ID。

2

如果从Debug-> Windows-> Threads加载Threads窗口。一旦你点击一个断点,你可以选择所有的线程并点击“Freeze Threads”,然后你可以恢复活动线程,选择它并选择“解冻线程”。

这将只允许当前线程在调试器中执行。

11

我刚刚发布了一个Visual Studio 2010扩展程序,它完全符合您的需求。 它是免费的:)。

介绍

这个Visual Studio 2010的扩展增加了两个快捷键和工具栏按钮,以使开发人员能够轻松地专注于单个线程同时调试多线程应用程序。

它大大降低了手动进入线程窗口冻结/解冻所有线程(除了需要遵循的线程)的需求,因此有助于提高生产力。

特点

限制的进一步执行,只有当前线程。将冻结所有其他线程。快捷键:CTRL + T + T或雪花按钮。 切换到下一个单线程(基于ID)。将改变当前线程并冻结所有其他线程。快捷键:CTRL + T + J或下一步按钮。

检查出来here on the Gallery,在official pageCodeplex repository

+0

我会检查出来的!谢谢! – JMarsch 2011-09-16 15:39:15