zoukankan      html  css  js  c++  java
  • dotnet core 高CPU定位 dotnet-dump篇

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

    当前线程

  • 相关阅读:
    四则运算
    四则运算二
    学习进度条
    四则运算一
    课堂测试七
    问题与思考6
    问题与思考5
    问题与思考04
    Android SDK 目录说明
    如何判断视频的比例(4:3/16:9)和分辨率?
  • 原文地址:https://www.cnblogs.com/luluping/p/13917364.html
Copyright © 2011-2022 走看看