如何在Visual Studio中仅调试一个线程

kam*_*ber 26 .net debugging multithreading visual-studio-2010

我希望能够在调试时只跟踪一个线程的执行.我使用线程池,因此调试器不断在线程之间切换,这使得调试非常不舒服.

读:

我得到一个解决方案,它是条件断点(基于线程的名称).但是,我不能说"线程#3"总是处理有趣的情况,所以我必须改变每次执行的条件.太多的工作.

另一个解决方案是使用冻结/解冻功能只使我有趣的线程运行.但是,这会使某些信息不可用,因为所有线程都已暂停.

我现在使用的是让程序运行直到我到达断点,我肯定会在好的线程中.然后我暂停线程池的所有其他线程并尝试恢复执行.如果程序似乎卡住了,我暂停,解冻当前线程.

理想的解决方案是找到正确的线程,标记它然后对Visual Studio说:" 只有当前线程被标记时才会中断 ".

这甚至可能吗?

小智 7

在调试时,您可以冻结 " 线程"窗口中的所有线程,并仅恢复您感兴趣的线程.

  • 谢谢,但它没有回答这个问题:我希望应用程序正常运行,只停留在一个线程中的断点 (4认同)

小智 2

我会使用您提到的条件断点,但不是与某些固定字符串进行比较,而是与某些半全局变量(可能是主类上的静态属性?)进行比较。

当您确定哪个线程变得有趣时,您可以使用立即窗口来设置变量名称并允许命条件断点。