dotnet core CPU高问题定位 dotnet-dump

原文出处:dotnet core 高CPU定位 dotnet-dump篇 - linFen - 博客园

在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关系深入分析

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值