我正在使用 VS2010 Beta 2 来调试一些多线程代码。喜欢并行堆栈等。

但我有个问题:我在一个可能由多个线程调用的方法中设置了断点。一旦到达断点,我真的想将注意力集中在触发该断点的线程上。然而,当我点击“step”时,VS 经常切换到另一个线程(假设我在线程 1 上停止,但与此同时,线程 2 遇到了我的断点)。

我知道我可以手动冻结线程窗口中的线程。有没有一种方法可以自动执行此操作 - 基本上,一旦我遇到断点,就冻结除当前线程之外的所有线程,直到我遇到 F-5?

有帮助吗?

解决方案

这并不是说我知道的,但是你可以,而你正在加紧通过禁用断点。

当我担心混淆许多线程我倾向于只保留线程窗口打开并保持一个音符线程ID的的。

其他提示

我刚刚发布了一个 Visual Studio 2010 扩展,它完全可以满足您的需求。而且它是免费的:)。

推介会

此 Visual Studio 2010 扩展添加了两个快捷方式和工具栏按钮,使开发人员可以在调试多线程应用程序时轻松专注于单线程。

它极大地减少了手动进入“线程”窗口冻结/解冻除需要遵循的线程之外的所有线程的需要,因此有助于提高工作效率。

特征

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

一探究竟 在画廊这里, ,在 官方网站 或者 Codeplex 存储库.

如果你一旦你打一个破发点负荷调试 - > Windows的>主题..的线程窗口,你可以选择所有的线程,然后点击“冻结线程”那么你就可以恢复活动的线程,选择它,然后选择“解冻线程”。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top