转储

转储是一种文件,其中包含创建转储时该进程的快照,可用于检查应用程序的状态。 当很难将调试程序附加到 .NET 应用程序(如生产或 CI 环境)时,可使用转储来调试该应用程序。 使用转储可以捕获有问题进程的状态,并且可以直接检查状态而无需停止应用程序。

收集转储

可以通过多种方式收集转储,具体取决于运行应用的平台。

注意

转储可能包含敏感信息,因为它们可以包含正在运行进程的全部内存。 处理它们时请考虑所有安全限制和指导。

提示

有关转储集合、分析和其他注意事项的常见问题,请参阅转储:常见问题解答

  • 可以使用环境变量将应用程序配置为在发生故障时收集转储

  • 你可能需要在应用尚未发生故障时收集转储。 例如,如果想要检查似乎处于死锁状态的应用程序的状态,则配置环境变量以在发生故障时收集转储将不起作用,因为应用仍在运行。

  • dotnet-dump 是一种用于收集转储的简单跨平台命令行工具。 其他几个调试器工具(如 Visual Studiowindbg)也具有转储收集功能。

  • 如果在生产环境中运行应用,或者以分布式方式(多个服务、副本)运行应用,则 dotnet-monitor 为许多常见方案和即席诊断调查(包括转储收集和出口)提供支持。 它允许远程收集转储或触发条件收集转储。

分析转储

内存分析

如果应用的内存继续增长,则可以对应用程序执行内存分析,但你不确定为什么会这样。 调试内存泄漏教程演示如何使用 dotnet CLI 工具以及 dotnet-sos 命令转储和 gcroot 调试内存泄漏。

Visual Studio 内存分析可用于诊断 Windows 上的内存泄漏。

另请参阅

详细了解如何利用转储来帮助诊断 .NET 应用程序中的问题。

  • 调试 Linux 转储这一教程分步演示了如何调试在 Linux 中收集的转储。

  • 调试死锁这一教程分步演示了如何使用转储来调试 .NET 应用程序中的死锁。