rid*_*00z 33 debugging multithreading visual-studio visual-studio-debugging
当我在Visual Studio中进行调试时,出于某种原因调试某个线程时,Visual Studio将跳转到不同的线程.
如何更改行为以使其位于同一个线程上?
Mic*_*urr 24
当你说"调试某个线程时,visual studio会随机跳转到不同的线程",你的意思是当你在特定线程上单步执行代码时,你可能会遇到另一个线程上的断点吗?
如果是这样,您可以使用"线程"窗口"冻结"除您要调试的线程之外的线程:
来自http://msdn.microsoft.com/en-us/library/w15yf86f.aspx:
在"线程"窗口中,您可以设置活动线程.此外,您可以冻结或解冻每个单独线程的执行.冻结可以防止执行线程.解冻使它能够继续下去.两个垂直的蓝色条标识冻结的线程.
对此的支持可能取决于您拥有的Visual Studio版本(例如,我认为Express版本不支持Thread窗口).
这是默认值,因为在调试器中运行程序不应该改变程序的结果,我假设.
当程序运行"实时"时,它会在线程之间不断切换,因此如果调试器没有这样做,程序的行为会有所不同.
在任何情况下,我知道防止它的唯一方法是打开"线程"窗口,右键单击除当前线程之外的所有其他线程,然后选择freeze.(thaw之后再次记住)
这里所有的答案都涉及冻结线程,但是当线程很多时,它将变得很麻烦,而且您不知道要冻结哪个线程。我发现了一个简单的把戏。
当某个线程i击中一个断点,并且说j,k等将在某个时间内击中该断点时,请暂时禁用该断点并开始调试线程i。我看到调试器不会跳转到其他线程,因为对于那些线程来说,没有断点可以插入。完成调试后,启用断点。
| 归档时间: |
|
| 查看次数: |
6791 次 |
| 最近记录: |