firemail 发表于 2017-1-12 10:14:09

在vs中线程死锁时的一些调试经验

有时候因为一些操作导致线程死锁 了,也没有断点提示在哪里死锁,这时候可以点击“全部中断”按钮,如下图(类似暂停的那个按钮):http://img.blog.csdn.net/20131211124639109?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbWJhMTZjMzU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast
这时候再看调试窗口中的线程窗口:http://img.blog.csdn.net/20131211124754390?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbWJhMTZjMzU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast
留意黄色箭头所指线程就是死锁的线程,那这大概就能猜出问题在哪儿了。
但是有可能会死锁在一些windows的win32线程,但这也肯定是因为程序中其他线程造成的,这时候可以观察一下线程窗口中还剩下那些线程,对于可疑的线程可以看看线程都停在什么位置:http://img.blog.csdn.net/20131211125110656?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbWJhMTZjMzU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast
同时观察一下调用的堆栈,导致死锁的线程通常就会停在死锁的那个语句上。
http://blog.csdn.net/mba16c35/article/details/17261391

页: [1]
查看完整版本: 在vs中线程死锁时的一些调试经验