天天看点

WinDbg调试CPU占用高的问题 试验+实战 《第七篇》一、High CPU试验

  1、示例代码

  2、运行控制台程序后,抓取3次Dump,最好每次间隔几分钟。

  3、分别对每个Dump执行如下指令。

  从上面的输出可以看到,线程0的CPU时间不断增加,CPU高占用很可能是由于线程0正在执行的代码有问题造成的。

  可以用!clrstack命令查看一下当前的调用堆栈以及其上的局部变量和值。

  当执行!clrstack时,报出了如下提示:

  这不是我想要的,加载mscorwks失败。后来经过调试发现,原来是第一步就.load时就错了,因为我的那段代码用的是vs2010。所以应该加载.net

frameword 4.0。

  所以,最初应该执行的.load

C:/WINDOWS/Microsoft.NET/Framework/v4.0.30319/sos.dll

  然后在执行!clrstack

  第三个Dump

  第二个Dump

  第一个Dump:

  不知道为什么,我的第三个Dump并没有出现HighCPU的提示,也许是我的电脑配置有点高吧。不过,出问题的代码已可以看得到,就在Main方法里。只需要细细查看Main方法找到问题所在就OK了。

  学习自: