创建.NET程序Dump的几种姿势
当一个应用程序运行的有问题时,生成一个Dump文件来调试它可能会很有用。在Windows、Linux或Azure上有许多方法可以生成转储文件。
Windows平台
dotnet-dump (Windows)
dotnet-dump全局工具是一种收集和分析.NET核心应用程序Dump的方法。
安装
dotnet-dump(必须要 .NET SDK) 或者 直接下载dotnet tool install --global dotnet-dump
使用
ps命令找到进程Iddotnet-dump ps
通过指定的进程id创建dump文件
dotnet-dump collect --process-id <ProcessId>

Windows 任务管理器
- 按下
Ctrl+Shift+Esc打开 Windows 任务管理器 - 选择"详细信息"选项卡
- 在列表中找到你的应用程序
- 右击它,然后选择 "创建转储文件"


SysInternals - Process Explorer
- 下载 Process Explorer: Process Explorer
- 打开 Process Explorer
- 右击进程选择 "Create Dump" 项
]
SysInternals - ProcDump (Windows)
ProcDump是一个命令行工具,当应用程序假死或进程使用太多的CPU时,可以生成一个Dump文件。
下载 ProcDump: ProcDump
使用进程名或者进程Id创建dump
procdump notepad
procdump 4572

调试诊断工具
调试诊断工具允许在满足某个条件时生成一个转储文件。例如,当应用程序崩溃或CPU使用率高时,它可以生成一个Dump文件。
- 下载 Debug Diagnostic Tool v2 Update 3
- 点击 "DebugDiag 2 Collection" (在开始菜单中可用)
- 配置一个规则,比如说当应用程序崩溃的时候
- 当条件得到满足时,会在配置的文件夹中生成一个崩溃Dump。
Visual Studio
如果你正在调试一个应用程序,你可以直接从Visual Studio保存一个转储文件。打开 "调试 "菜单,点击 "将转储另存为... "菜单项。

WinDbg
如果你正在使用WinDbg调试一个应用程序,你可以使用.dump命令来生成一个转储文件。/ma选项允许为所有连接的进程生成一个minidump:
.dump /ma [path]

Windows Error Reporting
Windows错误报告允许在应用程序崩溃时生成一个转储文件。你可以查看我以前关于它的帖子。出错时自动创建崩溃转储文件 "Tip: 在出错时自动创建一个崩溃转储文件"。
Linux
dotnet-dump (Linux)
dotnet-dump全局工具是一种收集和分析.NET核心应用程序转储的方法。
安装
dotnet-dump(必须 .NET SDK) 或者 下载它dotnet tool install -g dotnet-dump
使用下面的命令找到进程Id
dotnet-dump ps
通过指定的进程id创建dump文件
dotnet-dump collect --type heap --process-id <ProcessId>

SysInternals - ProcDump (Linux)
ProcDump是一个命令行工具,当应用程序冻结或使用太多的CPU时,可以生成一个Dump文件。
下载 ProcDump for Linux: ProcDump For Linux
使用进程名或者进程Id创建dump
procdump 4572

Azure App Services
Azure允许我们为App服务生成和分析Dump文件。
选择你的应用程序服务
转到 "诊断和解决问题"
选择 "诊断工具"

选择 "收集内存转储"
点击 "收集内存转储 "按钮
几分钟后,转储在配置的存储账户中可用。

版权
原文版权:Meziantou
翻译版权:InCerry
原文链接:
https://www.meziantou.net/how-to-generate-a-dump-file-of-a-dotnet-application.htm
创建.NET程序Dump的几种姿势的更多相关文章
- SharePoint 2013 代码创建应用程序目录(App Catalog)
众所周知,SharePoint App是2013版本的一大特色,那么,关于App的分发有几种方式呢?SharePoint给我们提供了两种方式,一种是上载到SharePoint应用商店,另一种是在本地S ...
- Thread类的常用方法_sleep和创建多线程程序的第二种方式_实现Runnable接口
sleep方法是在Thread类中的一个静态方法,当一个线程调用了sleep方法,被调用的那个线程就会暂时的让出指定时间的CPU执行权,在这段时间也不会参与CPU的调度,当时间到了之后,就会重新回到就 ...
- 创建多线程程序的第一种方式_创建Thread类的子类
创建多线程程序的第一种方式:创建Thread类的子类java.lang.Thread类:是描述线程的类,我们想要实现多线程程序,就必须继承Thread类 实现步骤: 1.创建一个Thread类的子类 ...
- 主线程和创建多线程程序的第一种方式_创建Thread类的子类
/** * 主线程:执行主方法的线程(main) * 单线程程序:在java程序中只有一个线程 * 执行从main方法开始,从上倒下依次执行 */ public class Demo01MainThr ...
- python HelloWorld 的 4 种姿势,你知道几种
安装完 Python 之后该干啥,当然是要 say HelloWorld 了. python.exe 就是个普通程序 和其它所有命令一样,在命令行中敲下 python 并回车的时候,操作系统去 PAT ...
- Python 高级特性介绍 - 迭代的99种姿势 与协程
Python 高级特性介绍 - 迭代的99种姿势 与协程 引言 写这个笔记记录一下一点点收获 测试环境版本: Python 3.7.4 (default, Sep 28 2019, 16:39:19) ...
- 浅谈OC对象初始化的三种姿势
一.普通程序猿普通程序员使用最常见路人姿势等场.普普通通,纯属陆仁辈. 陆仁贾写法: // view 1 UIView *v1 = [UIView alloc] initWithFrame:CGRec ...
- 改善C#程序,提高程序运行效率的50种方法
改善C#程序,提高程序运行效率的50种方法 转自:http://blog.sina.com.cn/s/blog_6f7a7fb501017p8a.html 一.用属性代替可访问的字段 1..NET ...
- 快速了解IOC的几种姿势
一.首先我们了解IOC如何注入的几种姿势 构造函数注入(Constructor Injection) Ioc容器会智能的选择和调用合适的构造函数以创建依赖的对象.如果被选择的构造函数具有相应的参数,I ...
随机推荐
- 「学习笔记」倍增思想与lca
目录 ST表 算法 预处理 查询 关于 log2 Code 预处理 查询 例题 P2880 P2048 lca 树上 RMQ 前置知识:欧拉序列 算法 Code 离线 Tarjan 算法 Code 倍 ...
- python数据精度问题
一.python运算时精度问题: 1.运行时精度问题在Python中(其他语言中也存在这个问题,这是计算机采用二进制导致的),有时候由于二进制和十进制之间对应问题会导致数值的精度问题,比如无法用有限个 ...
- Java连接简单使用ElasticSearch
目录 1. 添加依赖 2. 代码,无账号密码 3. 代码,有账号密码,并且是https方式 4. 参考文章 1. 添加依赖 <!-- https://mvnrepository.com/arti ...
- Redis图形化管理工具
一.treeNMS Redis做为现在web应用开发的黄金搭担组合,工作中的项目大量使用了Redis,treeNMS是一款用于JAVA语言开发的Redis管理工具:treeNMS管理工具,直接到htt ...
- KingbaseES 数据库Windows环境下注册失败分析
关键字: KingbaseES.Java.Register.服务注册 一.安装前准备 1.1 软件环境要求 金仓数据库管理系统KingbaseES V8.0支持微软Windows 7.Windows ...
- [DOM]获取元素:根据ID、标签名、HTML5新增的方法、特殊元素获取
目录 [DOM]获取元素:根据ID.标签名.HTML5新增的方法.特殊元素获取 1.根据 ID 获取[.getElementById( )] 2.根据标签名获取[.getElementsByTagNa ...
- 利用ldt_struct 与 modify_ldt 系统调用实现任意地址读写
利用ldt_struct 与 modify_ldt 系统调用实现任意地址读写 ldt_struct与modify_ldt系统调用的介绍 ldt_struct ldt是局部段描述符表,里面存放的是进程的 ...
- 如何写成高性能的代码(一):巧用Canvas绘制电子表格
一.什么是Canvas Canvas是HTML5的标签,是HTML5的一种新特性,又称画板.顾名思义,我们可以将其理解为一块画布,支持在上面绘制矩形.圆形等图形或logo等. 需要注意的是,与其他标签 ...
- 解决swiper组件autoplay报错问题
最近在自定义一个swiper 插件 发现引用之后不定时一直在报错 Uncaught TypeError: Cannot read properties of undefined (reading 'a ...
- 使用 Loki 收集 Traefik 日志
转载自:https://mp.weixin.qq.com/s?__biz=MzU4MjQ0MTU4Ng==&mid=2247492264&idx=1&sn=f443c92664 ...