首页 > Web开发 > 详细

dotnet core 高CPU定位

时间:2020-11-03 09:37:46      阅读:76      评论:0      收藏:0      [点我收藏+]

在windows操作系统,我们可以用Windbg定位,那在linux微软也提供dotnet-dump定位

准备

# 注册 Microsoft 密钥和源
sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm

# 安装 .NET Core SDK
yum install dotnet-sdk-3.1

# 验证是否安装成功
dotnet --version

dotnet tool install -g dotnet-dump

 

 

以下定位代码

技术分享图片

 

 1) centos 7 编译代码并运行 进程号 8936

技术分享图片

 

 

2) top -Hp 8936   显示8936进程中 线程8936 CPU 99.3%

 

技术分享图片

 

 4) dotnet-dump collect -p 8936 -o mytest.dump

技术分享图片

 

 5) 分析dump 文件这里windowdbg 类似 dotnet-dump analyze mytest.dump

 

技术分享图片

 

 6) dumpdomain --显示所有 AppDomain 和域中的所有程序集的信息  其中dotnet core 和.net framwork 的  AppDomain 有些差别, .net framwork 有3个程序域,dotnetcore 只有2个,少一个共享程序域.

技术分享图片

 

 7)言归正传,看一下成活线程 clrthreads -live   

技术分享图片

 

 8) threads 

技术分享图片

 

 9)setthread 0   #切换8936显程编号 0  并查看

      clrstack -a  #当前线程托管代码的堆栈跟踪

 找出当前线程计算stack情况调用Test2 

技术分享图片

 10) r 也可以进一步看 寄存器执行在做什么(汇编指令),根据linux 内核dumpstack关系深入分析

技术分享图片

 

 

当前线程

dotnet core 高CPU定位

原文:https://www.cnblogs.com/luluping/p/13917364.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!