创建.NET程序Dump的几种姿势

当一个应用程序运行的有问题时,生成一个 Dump 文件来调试它可能会很有用。在 Windows、Linux 或 Azure 上有许多方法可以生成转储文件。

Windows 平台

dotnet-dump (Windows)

dotnet-dump 全局工具[1]是一种收集和分析.NET 核心应用程序 Dump 的方法。

  1. 安装 dotnet-dump (必须要 .NET SDK) 或者 直接下载[2]

    dotnet tool install --global dotnet-dump
  2. 使用ps命令找到进程 Id

    dotnet-dump ps
  3. 通过指定的进程 id 创建 dump 文件

    dotnet-dump collect --process-id <ProcessId>
472d1f3981fa321d1e16c26b7d50c037.png

Windows 任务管理器

  1. 按下 Ctrl+Shift+Esc 打开 Windows 任务管理器

  2. 选择"详细信息"选项卡

  3. 在列表中找到你的应用程序

  4. 右击它,然后选择 "创建转储文件"9cf040e92aa1a0d8b8ecec326339b3a1.png

587c3153f5035ba1869d3dc62615c595.png

SysInternals - Process Explorer

  1. 下载 Process Explorer: Process Explorer[3]

  2. 打开 Process Explorer

  3. 右击进程选择 "Create Dump" 项

786fc5a4a9122debb72bd305b99886ca.png]

SysInternals - ProcDump (Windows)

ProcDump是一个命令行工具,当应用程序假死或进程使用太多的 CPU 时,可以生成一个 Dump 文件。

  1. 下载 ProcDump: ProcDump[4]

  2. 使用进程名或者进程 Id 创建 dump

    procdump notepad
    procdump 4572
c30d297112f1b70fb04426bfbf3102a1.png

调试诊断工具

调试诊断工具允许在满足某个条件时生成一个转储文件。例如,当应用程序崩溃或 CPU 使用率高时,它可以生成一个 Dump 文件。

  1. 下载 Debug Diagnostic Tool v2 Update 3[5]

  2. 点击 "DebugDiag 2 Collection" (在开始菜单中可用)

  3. 配置一个规则,比如说当应用程序崩溃的时候

  4. 当条件得到满足时,会在配置的文件夹中生成一个崩溃 Dump。

Visual Studio

如果你正在调试一个应用程序,你可以直接从 Visual Studio 保存一个转储文件。打开 "调试 "菜单,点击 "将转储另存为... "菜单项。

c0e8a9a1ed0ee5b0f874e481a5d6d244.png

WinDbg

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

.dump /ma [path]
ce08e39502ea73c53b937109ebb50e53.png

Windows Error Reporting

Windows 错误报告允许在应用程序崩溃时生成一个转储文件。你可以查看我以前关于它的帖子。出错时自动创建崩溃转储文件[6] "Tip: 在出错时自动创建一个崩溃转储文件"。

Linux

dotnet-dump (Linux)

dotnet-dump 全局工具[7]是一种收集和分析.NET 核心应用程序转储的方法。

  1. 安装 dotnet-dump (必须 .NET SDK) 或者 下载它[8]

    dotnet tool install -g dotnet-dump
  2. 使用下面的命令找到进程 Id

    dotnet-dump ps
  3. 通过指定的进程 id 创建 dump 文件

    dotnet-dump collect --type heap --process-id <ProcessId>
69434a55a0be1cfbf3a7318318d428d6.png

SysInternals - ProcDump (Linux)

ProcDump 是一个命令行工具,当应用程序冻结或使用太多的 CPU 时,可以生成一个 Dump 文件。

  1. 下载 ProcDump for Linux: ProcDump For Linux[9]

  2. 使用进程名或者进程 Id 创建 dump

    procdump 4572
21f692f40a47d70f9f0ae04bb364b083.png

Azure App Services

Azure 允许我们为 App 服务生成和分析 Dump 文件。

  1. 选择你的应用程序服务

  2. 转到 "诊断和解决问题"

  3. 选择 "诊断工具"

    1273d65cfc0804f1c3a660615be2b6c5.png
  4. 选择 "收集内存转储"

  5. 点击 "收集内存转储 "按钮

  6. 几分钟后,转储在配置的存储账户中可用。7f8c9ddd053fa12b44c97461c6773741.png

版权

原文版权:Meziantou

翻译版权:InCerry

原文链接: https://www.meziantou.net/how-to-generate-a-dump-file-of-a-dotnet-application.htm

参考资料

[1]

dotnet-dump全局工具: https://learn.microsoft.com/en-us/dotnet/core/diagnostics/dotnet-dump?WT.mc_id=DT-MVP-5003978

[2]

直接下载: https://learn.microsoft.com/en-us/dotnet/core/diagnostics/dotnet-dump?WT.mc_id=DT-MVP-5003978#install

[3]

Process Explorer: https://learn.microsoft.com/en-us/sysinternals/downloads/process-explorer?WT.mc_id=DT-MVP-5003978

[4]

ProcDump: https://learn.microsoft.com/en-us/sysinternals/downloads/procdump?WT.mc_id=DT-MVP-5003978

[5]

Debug Diagnostic Tool v2 Update 3: https://www.microsoft.com/en-us/download/details.aspx?id=58210

[6]

出错时自动创建崩溃转储文件: https://www.meziantou.net/tip-automatically-create-a-crash-dump-file-on-error.htm

[7]

dotnet-dump全局工具: https://learn.microsoft.com/en-us/dotnet/core/diagnostics/dotnet-dump?WT.mc_id=DT-MVP-5003978

[8]

下载它: https://learn.microsoft.com/en-us/dotnet/core/diagnostics/dotnet-dump?WT.mc_id=DT-MVP-5003978#install

[9]

ProcDump For Linux: https://github.com/microsoft/ProcDump-for-Linux/blob/master/INSTALL.md

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/281485.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机专业英语怎么翻译,计算机专业英语翻译(附件).pdf

Lesson 1. PC 概述概述概述概述提到 “技术”一词&#xff0c;大多数人会想到计算机。我们生活中的几乎每个方面都有一些计算机化的成份。家里的电器中内置了微处理器&#xff0c;电视机也是如此&#xff0c;就连汽车上面也有计算机。但是&#xff0c;人们首先想到的计算机通常…

自然语言处理怎么最快入门?

2019独角兽企业重金招聘Python工程师标准>>> 本文整理自知乎上的一个问答&#xff0c;分享给正在学习自然然语言处理的朋友们&#xff01; 一、自然语言处理是什么&#xff1f; 自然语言处理说白了&#xff0c;就是让机器去帮助我们完成一些语言层面的事情&#xff…

点分治题表

poj1741: tree bzoj2152: 聪聪可可 bzoj2599: [IOI2011]Race [SPOJ1825]免费旅行 bzoj4016: [FJOI2014]最短路径树问题 &#xff08;字典序挺骚&#xff09; 转载于:https://www.cnblogs.com/TSHugh/p/8179241.html

dotnet-exec 0.8.0 released

dotnet-exec 0.8.0 releasedIntrodotnet-exec 是一个 C# 程序的小工具&#xff0c;可以用来运行一些简单的 C# 程序而无需创建项目文件&#xff0c;而且可以自定义项目的入口方法&#xff0c;支持但不限于 Main 方法Install/Updatedotnet-exec 是一个 dotnet tool&#xff0c;可…

政策推动加速5G发展 全球统一标准成大势所趋

2017IMT-2020(5G)峰会6月12日至13日在京召开。英特尔院士、通信与设备事业部无线标准首席技术专家吴耕对本网记者表示&#xff0c;未来5G技术不仅仅会以单个技术的身份去发展&#xff0c;它会和行业进行更多的融合。随着行业的发展、平台的发展、跨行业的融合&#xff0c;人们会…

普通高中段计算机学科知识,高中计算机学科的特点及教学内容浅探

摘要&#xff1a;为培养跨世纪接班人,发展和提高我国的计算机技术和水平,培养学生的计算机意识,普及计算机文化,提高科学文化素质,许多中学都相继开设了计算机课程,计算机课程将逐步成为中小学的一门独立的知识性与技能性相结合的基础性学科.计算机课程的开设,丰富了基础教育的…

Siamese Network理解

提起siamese network一般都会引用这两篇文章&#xff1a; 《Learning a similarity metric discriminatively, with application to face verification》和《 Hamming Distance Metric Learning》。 本文主要通过论文《Learning a Similarity Metric Discriminatively, with A…

HashMap是如何工作的

2019独角兽企业重金招聘Python工程师标准>>> 1 HashMap在JAVA中的怎么工作的&#xff1f; 基于Hash的原理 2 什么是哈希&#xff1f; 最简单形式的 hash&#xff0c;是一种在对任何变量/对象的属性应用任何公式/算法后&#xff0c; 为其分配唯一代码的方法。 一个真…

英特尔布局5G 提供端到端的解决方案

错失了移动互联设备市场的英特尔&#xff0c;想在5G和物联网上抢得先机。 在英特尔5G行业发展沙龙上&#xff0c;英特尔院士、通信与设备事业部无线标准首席技术专家吴耕表示&#xff0c;全球对5G产业有相当高的期待&#xff0c;下一代网的研发重心就是从以人为本的网向以物为本…

计算机网络实验进入实时模式,计算机网络实验1 PacketTrace基本使用.doc

计算机网络实验1 PacketTrace基本使用太原理工大学现代科技学院计算机通信网络课程 实验报告专业班级学 号姓 名指导教师 实验名称 同组人专业班级 学号 姓名 成绩一、实验目的掌握Cisco Packet Tracer 软件的使用方法。二、实验任务在Cisco Packet Tracer 中用HUB 组建局域网&…

adb不识别设备(手机)的若干情形及解决方法

1.执行adb root 提示adb: unable to connect for root: no devices/emulators found&#xff1b;执行adb devices ,List下无设备 》往往是数据线或USB插口问题&#xff0c;换根数据线或换个USB插口试试 2.执行adb devices List下提示 “592b925b no permissions (verify ud…

如何做到十五分钟领略PowerBI的DAX精华及框架

有小伙伴问&#xff0c;如何最快速理解整套 DAX 精华体系&#xff0c;例如&#xff1a;15分钟。这虽然是个不可能完成的任务&#xff0c;但在借助脑图PPT的强大能力下&#xff0c;还是可以做到的。如果你从没接触过 DAX&#xff0c;但未来要学习 DAX&#xff0c;以下视频值得看…

php html 转xml,用PHP生成XML文档(转义字符)

用PHP生成XML文档(转义字符)我正在从PHP脚本生成XML文档&#xff0c;并且需要转义XML特殊字符。我知道应该转义的字符列表&#xff1b; 但是正确的方法是什么&#xff1f;应该使用反斜杠(\)来转义字符还是正确的方法&#xff1f;有内置的PHP函数可以为我处理此问题吗&#xff1…

【例题 8-13 UVA - 11093】Just Finish it up

【链接】 我是链接,点我呀:) 【题意】 在这里输入题意 【题解】 尺取法。 假设现在取[l..r]这一段。 然后发现累加的和小于0了。 那么方法只能是不走l..l1这一段了 即delta递减(p[l]-q[l]); 直到delta>0为止。 某个时刻如果发现r1l 或者l1且rn 则合法。 如果发现l大于n了.…

springboot配置允许跨域访问

2019独角兽企业重金招聘Python工程师标准>>> 因springboot框架通常用于前后端分离项目&#xff0c;因此需配置后台允许跨域访问&#xff08;具体看注释&#xff09;&#xff0c;配置类如下&#xff0c;将该类加入工程中即可。 import org.springframework.context.a…

机器视觉传感器选型,交互作用决定取舍

目前&#xff0c;如何选择机器视觉传感器在当代的应用可谓是越来越广泛&#xff0c;如何选择机器视觉传感器是值得我们好好学习的&#xff0c;现在我们就深入了解如何选择机器视觉传感器。 相机是机器视觉系统的眼睛&#xff0c;而相机的心脏是图像传感器。传感器的选择取决于准…

大连交通大学计算机网络,计算机网络题库(大连交通大学)chapter5.doc

计算机网络题库(大连交通大学)chapter5Chapter 5 The Link Layer and Local Area Network1&#xff0e;A ( ) protocol is used to move a datagram over an individual link.Aapplication-layerBtransport-layerCnetwork-layerDlink-layer2&#xff0e;The units of data exch…

使用qrcode类制作二维码

<?phprequire_once ./phpqrcode/phpqrcode.php;/** 地址:http://phpqrcode.sourceforge.net/ 下载qrcode类* param string $url 要生成的链接* param bool $local 是否生成本地文件 * param string $logo 中间图片地址 */ echo qrcode(https://www.cnblogs.co…

《Hadoop大明白》【1】Hadoop的核心组件

为什么80%的码农都做不了架构师&#xff1f;>>> 本书适用于想对大数据平台Hadoop有深入了解的程序员朋友&#xff0c;会帮助你以后在应用开发方面趟平一些坑。 1&#xff0c;Hadoop 是一个系列大数据组件构成的应用平台&#xff0c;可由多个廉价机器搭建集群&#…

计算机专业学教育技术优势,西南交通大学教育技术学(040110)专业介绍

一、学科概况“教育技术学”是教育学一级学科下的一个二级学科&#xff0c;教育技术学是教育学和计算机信息技术发展下新兴的跨专业交叉性学科&#xff0c;也是一个理论与实践相结合的应用学科。主要研究信息技术特别是计算机网络技术、多媒体技术与教育技术的有效整合&#xf…