网站首页 全球最实用的IT互联网站!

人工智能P2P分享Wind搜索发布信息网站地图标签大全

当前位置:诺佳网 > 软件工程 > 后端开发 > .Net >

dotnet-dump安装、收集dump和崩溃自动收集dump

时间:2025-11-30 00:05

人气:

作者:admin

标签:

导读:继续写点基础的东西,因为基础的东西能带新手入门,入门后的事情其实是比较简单的。 我们开发dotnet程序后运行时经常出问题,比如cpu高、内存高、崩溃等问题,分析的方法就是使用...

继续写点基础的东西,因为基础的东西能带新手入门,入门后的事情其实是比较简单的。

我们开发dotnet程序后运行时经常出问题,比如cpu高、内存高、崩溃等问题,分析的方法就是使用dotnet的那套分析工具,今天以dotnet-dump为例,简单说下从安装到收集的操作步骤。

1.安装SDK

dotnet分析工具需要dotnet sdk环境,所以需要先安装sdk,以docker下Debian系统为例。参考地址是这个:
https://learn.microsoft.com/zh-cn/dotnet/core/install/linux-debian?tabs=dotnet10

  • 先安装wget
apt update
apt install wget
  • 再添加包存储库,我删除了sudo,搜索也需要先安装sudo命令
wget https://packages.microsoft.com/config/debian/13/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb
  • 安装sdk,下面代码是sdk10的,如果需要其他版本直接改版本号就行
sudo apt-get update && \
  sudo apt-get install -y dotnet-sdk-10.0

2.安装dotnet-dump和收集dump

参考文档
https://learn.microsoft.com/zh-cn/dotnet/core/diagnostics/dotnet-dump#dotnet-dump-analyze

dotnet tool install --global dotnet-dump

现在找到要dump的dotnet进程id,如果在docker里只运行一个dotnet程序,那么这个id一般都是1,也可以先ps命令找下。

dotnet-dump ps
dotnet-dump collect -p 1

这个collect就是收集,它根据dotnet进程内存大小需要一些时间,完成后就会提示收集的dump文件路径,等会就用analyze命令分析它,今天不是主要讲怎么分析,所以略过。

3.崩溃自动收集dump

参考文档
https://learn.microsoft.com/zh-cn/dotnet/core/diagnostics/collect-dumps-crash
这个的目的就是当dotnet程序因为一些无法继续的异常发生时,如堆栈溢出、未捕获的异常等会导致程序崩溃(结束进程,有守护进程会重新启动一个新的),自动收集dump,以便分析程序崩溃的原因。
这个非常简单,主要就时加一个环境变量

DOTNET_DbgEnableMiniDump=1

还有个环境变量也很重要,就是DOTNET_EnableCrashReport=1,它会使得在崩溃收集dump时还生成一个json,存储所有线程的信息(大部分时堆栈),里面有个关键的信息就是"crash":"true",它表示这个线程是引起崩溃的线程,崩溃的情况下,这个json里肯定有个线程是带"crash":"true"的,其他线程都是"crash":"false",所以在这个json里搜索这个就很快定位的引起崩溃的线程,以便在dump文件中快速定位问题原因。
用这套dotnet分析工具,我在工作中找到了很多次问题,有时还是线上环境,有cpu内存高的、有死锁的、有调用native代码导致的,都是写的代码错误导致,非常有用。当然这些都包含公司机密,不方便分享,所以就不能写出来了,我在博客里分享的都不会包含公司保密规定的内容,只能分享纯技术类的。

4.容器中需要添加调试权限

如果在docker容器里,需要加 允许进程跟踪和调试其他进程的能力(如下),否则dotnet-dump命令会报错。注意上下文对齐

cap_add:
  - CAP_SYS_PTRACE

Kubernetes里的配置,注意上下文对齐

capabilities:
  add:
  - SYS_PTRACE

当然这个存在一定的安全风险,有最佳做法,去搜索下吧。

完。

作者:Rick Carter
出处:http://pains.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信