我正在使用VS2010 Beta 2来调试一些多线程代码。喜欢并行堆栈等。
我有一个问题:我在一个方法中设置了断点,可以由多个线程调用。一旦我达到了断点,我真的希望将重点放在触发该断点的线程上。但是,当我点击“step”时,VS经常切换到另一个线程(比如我在线程1上停止了,但同时,线程2击中了我的断点)。
我知道我可以手动冻结线程窗口中的线程。有没有办法自动完成 - 基本上,一旦我遇到断点,冻结除当前线程之外的所有线程,直到我击中F-5?
答案 0 :(得分:12)
我刚刚发布了一个Visual Studio 2010扩展程序,它可以完全满足您的需求。 并且它是免费的:)。
<强>演示强>
此Visual Studio 2010扩展添加了两个快捷方式和工具栏按钮,使开发人员可以在调试多线程应用程序时轻松专注于单个线程。
它大大减少了手动进入“线程”窗口以冻结/解冻所有线程但需要遵循的线程的需要,因此有助于提高工作效率。
功能强>
仅限进一步执行当前线程。将冻结所有其他线程。快捷方式:CTRL + T + T或雪花按钮。 切换到下一个单线程(基于ID)。将更改当前线程并冻结所有其他线程。快捷方式:CTRL + T + J或下一步按钮。
答案 1 :(得分:2)
不是我知道的,但是你可以在踩踏时禁用你的断点。
当我担心混淆许多线程时,我倾向于只保持线程窗口打开并记下线程ID。
答案 2 :(得分:2)
如果从Debug-&gt; Windows-&gt;线程加载线程窗口..一旦达到断点,您可以选择所有线程并单击“冻结线程”然后您可以恢复活动线程,选择它并选择“解冻线程”。
这将只允许当前线程在调试器中执行。
答案 3 :(得分:1)