一、测试程序编写
二、windbg加载目标分析进程
三、windbg环境设置(否则出现:Unable to resolve ntdll!RtlCriticalSectionList)
1.加载sos.dll,命令行执行: .load C:\Windows\Microsoft.NET\Framework\v4.0.30319\SOS.dll
2.加载符号文件目录,在symbol search path中添加:
SRV*C:\Windows Sysmbols* http://msdl.microsoft.com/download/symbols
3.!locks未生效的话,重新加载:.reload
四、!lock,~*kv分析
1.查看锁
结果显示意思:线程6540在等待0x00f3a780锁,线程23c8在等待0x00f3a798锁
2.查找到线程6540和23c8对应的线程ID
结果显示:6540对应006,23c8对应007
3.分析006和007的堆栈
结果分析:第三列是入参,线程6已经占用00f3a798锁,线程7已经占据00f3a780锁
所以结果判断:两个线程在两把锁的交替使用上发生了死锁。