转储是一个文件,其中包含创建转储时进程的快照,可用于检查应用程序的状态。 当难以将调试器附加到 .NET 应用程序(例如生产环境或 CI 环境)时,可以使用转储来调试 .NET 应用程序。 使用转储可以捕获有问题进程的状态,并且可以直接检查状态而无需停止应用程序。
收集转储
可以通过多种方式收集转储,具体取决于运行应用的平台。
注释
转储可能包含敏感信息,因为它们可以包含正在运行进程的全部内存。 处理它们时请考虑所有安全限制和指导。
可以使用环境变量将应用程序配置为 在崩溃时自动收集数据转储。
你可能需要在应用尚未发生故障时收集转储。 例如,如果想要检查似乎处于死锁状态的应用程序的状态,则配置环境变量以在发生故障时收集转储将不起作用,因为应用仍在运行。
dotnet-dump 是一种用于收集转储的简单跨平台命令行工具。 其他几个调试器工具(如 Visual Studio 或 windbg)也具有转储收集功能。
如果在生产环境中运行应用,或者以分布式方式(多个服务、副本)运行应用,则 dotnet-monitor 为许多常见方案和即席诊断调查(包括转储收集和出口)提供支持。 它允许远程收集转储或触发条件收集转储。
小窍门
有关转储收集的故障排除和常见问题,请参阅转储:常见问题解答。
分析转储
导航到“调试 Linux 转储”,了解有关分析 Linux 上收集的转储的信息。
导航到 “调试 Windows 转储 ”,了解有关分析 Windows 上收集的转储的信息。
内存分析
如果应用的内存继续增长,则可以对应用程序执行内存分析,但不确定这种情况的原因。 调试内存泄漏教程 演示如何使用 dotnet CLI 工具和 dotnet-sos 命令 dumpheap 和 gcroot 调试内存泄漏。
Visual Studio 内存分析 可用于诊断 Windows 上的内存泄漏。
另请参阅
详细了解如何利用转储来帮助诊断 .NET 应用程序中的问题。
调试 Linux 转储这一教程分步演示了如何调试在 Linux 中收集的转储。
调试死锁这一教程分步演示了如何使用转储来调试 .NET 应用程序中的死锁。