Full
最大的转储,包含所有内存(包括模块映像) 。DOTNET_DbgEnableMiniDump = 1DOTNET_DbgMiniDumpName = [有权限的Path目录]DOTNET_CreateDumpDiagnostics = 1DOTNET_EnableCrashReport = 1
试一试我们写一段代码来试一把,如下有一段代码首先输出了当前DTONET_
前缀对的环境变量,然后抛出一个异常 。using System.Collections;foreach (DictionaryEntry environmentVariable in Environment.GetEnvironmentVariables()){if(environmentVariable.Key.ToString()?.StartsWith("DOTNET_") == false) continue;Console.WriteLine($"{environmentVariable.Key}={environmentVariable.Value}");}throw new Exception("Crash");
然后编写一个run.bat
脚本,用于设置环境变量顺便启动我们的程序 。@SET DOTNET_DbgEnableMiniDump=1@SET DOTNET_DbgMiniDumpName="G:\Temp\CrashDump\CrashDump\bin\Debug\net6.0\dump.dmp"@SET DOTNET_CreateDumpDiagnostics=1@SET DOTNET_EnableCrashReport=1@CrashDump.exe
运行run.bat
可以看到环境变量正确的读到了,另外也成功的生成了Dump 。
文章插图
最后在对应的目录下,也生成了Dump文件 。

文章插图
如果是在容器环境中的话,直接修改Dockerfile即可,如下所示的那样:

文章插图
如果在容器环境中,
DOTNET_DbgMiniDumpName
需要配置映射到Host的目录 , 不然容器退出,Dump文件也会随之消失 。总结本文主要是介绍了如何在dotNet程序崩溃时自动创建Dump , Windows上的方法对于.NET Freamwork和.NET Core版本都适用 。.NET Core全平台版本的话需要注意环境变量支持的.NET版本 。
参考文献
- https://learn.microsoft.com/en-us/troubleshoot/developer/webapps/aspnetcore/practice-troubleshoot-linux/lab-1-3-capture-core-crash-dumps
- https://www.meziantou.net/tip-automatically-create-a-crash-dump-file-on-error.htm
- https://github.com/dotnet/runtime/blob/main/docs/design/coreclr/botr/xplat-minidump-generation.md
推荐阅读
- 天玑2000最新消息_天玑2000曝光
- 华为蓝牙耳机如何煲机(华为蓝牙耳机煲机歌单)
- .NET Conf 2022 – 11 月 8 日至 10 日
- 网络不稳定老是掉线怎么办(网络不稳定如何解决)
- 怎么看主板型号(如何看电脑主板型号)
- 如何查询北京小客车摇号结果 北京市小客车
- 求大神,如何利用电脑赚钱(利用电脑赚钱教程)
- .NET 零开销抽象指南
- 二、.Net Core搭建Ocelot
- 用一台笔记本电脑如何赚钱(笔记本电脑赚钱的办法)