冻结VS2010中断点上的所有线程

时间:2010-02-04 17:38:55

标签: visual-studio visual-studio-2010 debugging visual-studio-debugging

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

我有一个问题:我在一个方法中设置了断点,可以由多个线程调用。一旦我达到了断点,我真的希望将重点放在触发该断点的线程上。但是,当我点击“step”时,VS经常切换到另一个线程(比如我在线程1上停止了,但同时,线程2击中了我的断点)。

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

4 个答案:

答案 0 :(得分:12)

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

  

<强>演示

     

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

     

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

     

功能

     

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

here on the Galleryofficial page上查看Codeplex repository

答案 1 :(得分:2)

不是我知道的,但是你可以在踩踏时禁用你的断点。

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

答案 2 :(得分:2)

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

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

答案 3 :(得分:1)