我有一个应用程序与4个线程工作相同的代码。但是,当我步它在不同的线程之间跳转。我如何将它锁定到一个线程,以便其他线程在调试时被忽略?Visual Studio,调试多个线程之一
回答
是的。
在线程窗口(调试 - >视窗 - >线程)右键单击你想要的线程,然后选择“切换到线程”。
您也可以选择你不想为了调试,让他们从运行的线程“冻结”。但是,如果你期望他们能够工作,不要忘记“解冻”他们。
我困惑。答案是“它不能做到?”该问题询问如何保持锁定到特定的线程,以便调试器不会在它们之间跳来跳去。切换到一个线程是好的,但是一旦另一个线程执行了某个操作,调试器就会跳转到该线程。如果我无法冻结另一个线程,因为它需要做些什么,那么我该如何锁定我所关注的线程? – bubbleking 2016-02-10 16:32:41
Incomeplete:|你必须始终点击切换到,每次发生什么事 – deadManN 2017-01-07 06:20:45
你也可以把你的代码条件断点,并把thread.Id == [someValue]
或Thread.Name == "[Somename]"
在断点条件...
谢谢查尔斯,这是有帮助的(不知道你可以做到这一点)。然而,我调试的最有效方式是jeffamaphone编写的,因为我不知道它的名字,然后它遇到了断点,并且看到了一些值 – 2010-10-10 19:17:44
这非常类似于在Visual Studio中 2008年 SP1中的一个非常类似的问题。它是用SP后修补程序修复的。但是还有其他证据表明这个修补程序没有被纳入代码库,这个feedback item也是一个问题。修复程序无法集成回来并不罕见。
没有一个反馈产品,恰好说明你的问题,至少,我可以找到。我建议你申请一个。考虑到重现此类错误的常见问题,我强烈建议您包含一个展示此问题的复制项目,并说明如何重现问题。
有各种各样的对您的问题解决方法,你可以进入调试+的Windows +主题,用鼠标右键单击您不想调试线程并选择冻结。不要忘记稍后解冻它们。
这些错误是通过一个单独的线程在Visual Studio再次固定2010 Service Pack 1的
单步执行似乎大多固定VS 2012(有一些注意事项,你可以在我下面的链接查看)。断点是一种痛苦。
冷冻和解冻线程是通常的解决方法,因为以前的答案都表示,但它是单调乏味的,当你的线程上被冻结另一个线程等待它可能会导致挂起。这些可能很难从你感兴趣的话题中失去你的位置而恢复。
另一个有用的工作流程是:在你的断点,在一些问题的答案还指出应用线程过滤器:
创建一个断点,右击断点,单击筛选,然后输入的ThreadId = 7740(你的线程来自线程窗口的id)。
这可能非常乏味。
我对微软的建议是解决单步执行(和它的变体),除非明确断点在另一个线程命中从未切换线程。他们还应该添加一个快捷方式(可能是Ctrl-F9)来创建一个带有当前线程ID的断点作为其过滤器。这将使第二个工作流程更加方便。
投票了建议,如果你同意,这将是有用的,或添加自己的建议:
“在VS 2012中单步执行单个线程似乎大部分都是固定的” - 不是真的,它在VS2017中仍然存在。 – user626528 2018-01-25 22:46:20
一个快得多的解决方法存在简单的情况 - 看到史蒂夫的环评。
调试器将只能完成步骤的源头所在的线程上的一个步骤。所以如果你打到一个断点,禁用它,然后开始步进,你不应该停在另一个线程上。如果您还有其他的断点在您的应用程序,而另一个线程命中一个,那么你将在混合线程状态调试为在我的情况描述
所以一旦各个线程开始打我的断点,我刚打继续几直到我确定了我正在寻找的调用 - 然后删除断点,并在保持同一线程的同时逐步完成代码的其余部分,而不受其余部分的干扰。
如果您有多个要保留的断点等,这显然会成为一个问题 - 但对于简单的情况来说,这样做要容易得多。
- 1. Visual Studio的多线程调试
- 2. 如何在Visual Studio中只调试一个线程
- 3. 如何让Visual Studio在调试时留在一个线程中?
- 4. 从另一个Visual Studio项目调试Visual Studio C程序
- 5. 调试多线程C++程序在Visual Studio 2008
- 6. 使用visual studio多线程应用程序进行调试
- 7. 如何在多线程程序中一次只在一个线程中维护Visual Studio调试器?
- 8. Visual studio:同时调试多个项目?
- 9. Visual Studio 2012调试多个项目
- 10. Visual Studio +远程gdb调试
- 11. Visual Studio调试
- 12. Visual Studio调试
- 13. 一般调试(Python Visual Studio)
- 14. 如何在Visual Studio中调试单个线程?
- 15. 如何在调试多线程应用程序时调试visual studio 2008的调试器?
- 16. Android Studio线程调试
- 17. 调试多线程程序
- 18. 是否可以在Visual Studio调试器中命名一个线程?
- 19. 如何在Visual Studio中只显示一个线程时调试死锁?
- 20. 调试在Visual Studio
- 21. 的Visual Studio调试
- 22. Visual Studio 2008调试
- 23. Visual Studio 2012 - 调试
- 24. Visual Studio未调试
- 25. 从一个控制许多Visual Studio调试器会话
- 26. 如何在visual studio调试器下启动一个进程?
- 27. 分离从Visual Studio调试器的一个过程
- 28. 管道输入到一个C++程序在Visual Studio中调试
- 29. 调试多线程程序
- 30. 调试多线程程序
您正在使用哪个版本的Visual Studio? Express,Pro,Ultimate ..? – Mark 2010-10-10 19:06:47
@Mark我正在使用终极 – 2010-10-10 19:09:06
然后jeffamaphone的链接将有所帮助,也许这也是为了进一步的信息切换到另一个线程,同时调试http://msdn.microsoft.com/en-us/library/bb157786.aspx – Mark 2010-10-10 19:10:57