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了。
学习自: