使用WinDbg分析CPU100%的问题

    在我们软件运行的时候,偶尔会出现CPU占比100%的问题,而且极其不容易排查,概率极低,我硬是操作了一个下午,出现了一次,然后找到了dmp文件,也没有任何的规律,那么就可以借助windbg进行分析。

现象就是

1.解决此问题,首先让软件出现此问题,然后找到任务管理,点击创建转储文件后,会生成dmp文件

2.这个dmp文件非常的大,我这个1.9G

3.在微软商店下载

4.打开后是

5.选择需要分析dmp文件

6.有些电脑需要下载一些dll,下载完成后,就是下面的样子

7. !t,命令是查询托管线程的,(对这个问题没有帮助)

8. ~*e !dumpstack,查询线程栈

这个命令执行后,有大量的信息,需要一个一个的看,会看到下面的报错

其实问题已经发现了,就是非安全线程集合导致的问题

9.~*e !clrstack,使用此命令会让错误更加的清晰

里面会看到大量的异常信息

10.其实在这里就可以在代码里面全局搜索

xxxxxx.Collect.DoException() 这个方法,就算是调用另外一个dll,那么搜索命名空间也能找到

11.当然,我们可以使用命令,把这个报错的dll导出去

!ip2md 00007ffe6a6d00cf

12.此命令就是把错误的代码保存成dll

!savemodule 00007ffe6a8c2d60 D:\1\1.dll

13.最终就能看到这个dll

14.最后用反编译工具,直接就定位这里了

15.因为这个问题,我知道是怎么发生的,所以看到这里就明白了,此处是非安全线程造成的,所以解决的办法,就是加锁,或者换成安全线程集合即可,最后完美解决,经过几天的测试,再也没有出现CPU100%的问题了。

最后感谢 一线码农 的指导

https://www.cnblogs.com/huangxincheng/p/14783766.html

来源:使用WinDbg分析CPU100%的问题-CSDN博客

猜你喜欢

转载自blog.csdn.net/u012563853/article/details/134341627