作为每个人,我习惯于在逐步模式下调试VS中的代码.好吧,既然我到处都有很多背景工作者的申请,我不再在堪萨斯州了.
调试线程应用程序的最有效方法是什么,并能够监视每个线程以跟踪代码中发生的情况?
截至目前,我坚持使用单独的记录器实例为每个线程进行调试,但这慢慢变成了一场噩梦,我很快就会淹没在我自己的日志中.
不要试图一次调试所有内容.将焦点缩小到一个线程或一对线程中的特定行为,这些线程围绕某些互斥锁进行交互.如果访问共享资源是问题,请设置使用该资源的断点(应该使用公共代码,而不是整个地方).
如果您只是想在线程1之前看到线程3完成,或者线程2用完了所有工作项并且处于空闲状态,请使用日志.
您还可以使用VS Threads视图查看每个线程在任何线程上的任何断点处停止进程时正在执行的操作.这可以让您深入了解所有线程在任何给定时刻所做的事情.
一个可能减轻您痛苦的小技巧是使用Visual Studio来冻结您不感兴趣的线程.然后,当您告诉调试器继续时,冻结的线程将永远不会执行,也不会遇到断点并使您感到困惑.
也许您可以使用此方法仅允许您正在调试的线程工作.例如,保留一个入队的线程和一个出列的线程,但冻结其他所有线程.
通过右键单击一个线程,可以从Visual Studio的Threads窗口冻结/解冻线程.