.net core dump分析
服务器上如果出现cpu内存饱满,找不到原因,那么dump文件分析必不可少。
起初是想在linux下调试.net core 的dump,但是环境一直无法安装 搞了许久没搞出来,其次文章太少了,google几页都变紫色了,园友大佬知道可以给小弟解惑下几个问题。
- Linux分析高版本的.net core必须是要lldb3.9.0 这个就很烦了。我的linux的centos7.4。没有现成的可以下载,只能自己编译。编译数小时最终发现并没有安装成功,大佬们有没有脚本能直接安装lldb3.9.0。开始都是按照https://www.cnblogs.com/calvinK/p/9263696.html 文章来,结果失败了,没有报错。也感谢这个博主帮助了解决不少问题。
- .net core console可以创建dump文件,但是asp.net core 无法创建dump文件,官方issue:https://github.com/dotnet/coreclr/issues/21484。 官方解决后,合并到了release 2.2. 也就是说我自己还要编译corelcr。而这个coreclr编译也需要特定版本基本也是3.9.0 https://github.com/dotnet/coreclr/blob/master/Documentation/building/linux-instructions.md 。
Windows下.net core dump分析
- 下载工具windbg 地址:https://www.microsoft.com/zh-cn/p/windbg-preview/9pgjgd53tn86?SilentAuth=1&rtc=1&activetab=pivot:overviewtab
- Dump文件:任务管理;选择w3wp.exe;右键;创建转储文件 这里项目用core的一个console项目举例 代码如下

- 用windbg打开dump文件
- 加载.net core版的sos扩展插件。输入:.load C:\Program Files\dotnet\shared\Microsoft.NETCore.App\2.2.1\sos
注意:framework和.net core都有提供相应版本的sos.dll,在load加载到windbg的时候请选择正确的地址,这里加载进去时2.2.1版本。
插件介绍:https://docs.microsoft.com/en-us/dotnet/framework/tools/sos-dll-sos-debugging-extension
- 加载完毕使用!help 查看是否加载成功,并查看命令介绍

- 查找线程 !threads

- 指定线程 ~{线程编号}s 例如22号线程:~22s 。 查找该线程的堆栈信息 !clrstack

- 利用!dumpheap 查找所有gc中所有的对象占用内存的大小并且排序。 (可以利用!help dumpheap 查看相关介绍)

- 利用 !dumpheap -min 85000 查看LOH对象来判断内存泄漏的对象 LOH 对象介绍:https://docs.microsoft.com/en-us/dotnet/standard/garbage-collection/large-object-heap
这里测试项目没有该对象

- 利用!dumpheap -strings 来查看指定对象在应用中的使用 这里用string 举例

- 利用!dumpheap -type Console 查看指定类型 在应用中的使用 这里用console举例

- 利用!do {线程编号}来查看该改对象在这个线程中的使用

还有很多的命令,再补充
.net core dump分析的更多相关文章
- 记一次Java Core Dump分析过程
#背景提要 很久没有亲自动手部署代码了,命令行的亲切感越来越低.放飞了键盘,习惯了鼠标操作的windows环境.冷不丁实操部署也是不错的. 常常在部署时,运维同学对于[hs_err_pid]文件视而不 ...
- Java core dump
目录 生成Java core dump core dump分析 生成Java core dump 可以按照下面这个文章的指引来通过jni调用触发Java core dump Generating a ...
- 使用GDB 追踪依赖poco的so程序,core dump文件分析.
前言 在windows 下 系统核心态程序蓝屏,会产生dump文件. 用户级程序在设置后,程序崩溃也会产生dump文件.以方便开发者用windbg进行分析. so,linux 系统也有一套这样的东东- ...
- linux core dump 文件 gdb分析
core dump又叫核心转储, 当程序运行过程中发生异常, 程序异常退出时, 由操作系统把程序当前的内存状况存储在一个core文件中, 叫core dump. (linux中如果内存越界会收到SIG ...
- core dump文件分析和调试
core介绍 当程序运行的过程中异常终止或崩溃,操作系统会将程序当时的内存状态记录下来,保存在一个文件中,这种行为就叫做Core Dump(中文有的翻译成"核心转储").我们可以认 ...
- Linux gdb分析core dump文件
文章目录1. coredump1.1 coredump简介1.2 coredump的文件存储路径1.3 coredump产生的条件1.4 coredump产生原因2. 测试生成coredump1. c ...
- Linux上Core Dump文件的形成和分析
原文: http://baidutech.blog.51cto.com/4114344/904419 Core,又称之为Core Dump文件,是Unix/Linux操作系统的一种机制,对于线上服务而 ...
- linux下core dump【总结】
1.前言 一直在从事linux下后台开发,经常与core文件打交道.还记得刚开始从事linux下开发时,程序突然崩溃了,也没有任何日志.我不知所措,同事叫我看看core,我却问什么是core,怎么看. ...
- 什么是core dump linux下用core和gdb查询出现"段错误"的地方
什么是core dump linux下用core和gdb查询出现"段错误"的地方 http://blog.chinaunix.net/uid-26833883-id-31932 ...
随机推荐
- 上传到HDFS上的文件遇到乱码问题
1.通过eclipse中的hdfs插件上传文件,上传成功,但是查看是乱码. 查阅文件本身的编码方式,发现是utf-8,同时文件在项目目录下,显示正常,因为我把它的编码格式也设成了utf-8. 2.通过 ...
- GUI学习之三——QObject学习总结
鉴于PyQt控件的继承关系,我们先学习PyQt控件的基类——QObject. 一.所有的QT对象的基类 我们先看一下PyQt里空间的继承关系,稍微改一下代码,显示出继承关系 from PyQt5.Q ...
- 由odoo源不稳定想到的,一个非常简单但是有效的方式解决yum源不稳定的问题,实现无限重试
如题,最近在安装odoo 10, 但是官方源的速度是在是不敢恭维,断断续续的. yum 有没有能够无限重试的参数,于是用python写了个死循环,让它无限重试下去 脚本如下: #! /usr/bin/ ...
- #error "OpenCV 4.x+ requires enabled C++11 support"解决方法
报错的本质是需要c++11的支持,顾名思义,当前的编译环境是c++11以下的版本.我用的cmake编译,因此再cmakelists文件内添加设置c++标准为14就可以编译通过. )
- 异步async与await的简单探究
在学习.net core的过程中,到处见到异步的使用,Task.async.await随处可见.有点疑惑,就去了解了下这个过程是怎样的. 下面是一段代码,去看看是怎么执行的吧. 一.看看异步执行的方式 ...
- 找出数组中最大值and索引
找出数组中的最大值和和最大值的索引位置..... 第一中方法: /** * 找出数组中最大值和最大值的索引 * @param args */ public static void main(Strin ...
- 渗透测试的理论部分3——ISSAF的详细描述
ISSAF即信息系统安全评估框架(Information Systems Security Assessment Framework)是另外一种开放源代码的安全性测试和安全分析框架.为了解决安全评估工 ...
- JQuery跳出each循环的方法
一.jquery each循环,要实现break和continue的功能: break----用return false; continue --用return ture; 二.jquery怎么跳出当 ...
- Vue-箭头函数
03-箭头函数 箭头函数 基本语法: ES6允许使用“箭头”(=>)定义函数 var f = a = > a //等同于 var f = function(a){ return a; ...
- python turtle库
turtle库初步 先看 https://www.cnblogs.com/chy8/p/9448606.html 一 turtle库介绍 turtle乌龟 import turtle from tur ...