11

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

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

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

4

4 回答 4

12

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

介绍

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

它大大减少了手动进入“线程”窗口以冻结/解冻除需要遵循的线程之外的所有线程的需要,因此有助于提高生产力。

特征

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

在画廊官方页面Codeplex 存储库上查看它。

于 2011-07-02T10:46:20.143 回答
3

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

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

于 2011-04-13T21:57:39.923 回答
2

我不知道,但是您可以在单步执行时禁用断点。

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

于 2010-02-04T18:02:13.857 回答
1

John Robbins有一篇关于如何使用 Visual Studio 宏执行此操作的博客文章

于 2011-07-02T10:53:45.643 回答