我正在使用VS2010 Beta2调试一些多线程代码。喜欢并行堆栈,等等。
不过,我有一个问题:我在一个方法中设置了一个断点,该方法可能会被多个线程调用。一旦我到达断点,我真的希望将焦点放在触发该断点的线程上。然而,当我点击"step“时,VS经常切换到另一个线程(假设我在线程1上停止了,但在此期间,线程2命中了我的断点)。
我知道我可以在线程窗口中手动冻结线程。有没有办法自动完成--基本上,一旦我命中断点,冻结除当前线程之外的所有线程,直到我按下F-5?
发布于 2010-02-05 02:02:14
据我所知没有,但是您可以在单步执行时禁用断点。
当我担心混淆许多线程时,我倾向于保持线程窗口打开,并记下线程id。
发布于 2011-07-02 18:46:20
我刚刚发布了一个Visual Studio2010扩展,它做的正是你想要的。而且它是免费的:)。
演示文稿
此Visual Studio 2010扩展添加了两个快捷方式和工具栏按钮,以允许开发人员在调试多线程应用程序时轻松地专注于单线程。
它极大地减少了手动进入线程窗口冻结/解冻除需要跟随的线程之外的所有线程的需要,因此有助于提高生产率。
功能
将进一步的执行限制在当前线程上。将冻结所有其他线程。快捷方式: CTRL+T+T或雪花按钮。切换到下一个单线程(基于ID)。将更改当前线程并冻结所有其他线程。快捷键: CTRL+T+J或Next按钮。
在official page或Codeplex repository上查看here on the Gallery。
发布于 2011-04-14 05:57:40
如果从Debug->Windows->Threads.加载线程窗口..一旦你达到一个断点,你可以选择所有的线程并点击“冻结线程”,然后你可以恢复活动的线程,选择它并选择“解冻线程”。
这将只允许当前线程在调试器中执行。
https://stackoverflow.com/questions/2201849
复制相似问题