学习使用dotnet-dump工具分析.net内存转储文件(1)
使用createdump工具dump的.net进程内存映射文件,可以用dotnet-dump诊断工具通过命令行分析,也支持在VS中打开分析,前者体量小、速度快,后者可视化效果好。本文学习使用dotnet-dump工具分析dump文件的基本用法。
dotnet-dump支持在Windows和Linux中使用,可以采用下面的命令行在线安装,也支持直接下载对应操作系统的可执行文件,具体下载地址见参考文献1.
dotnet tool install --global dotnet-dump
dotnet-dump支持三类操作:创建dump文件,分析dump文件和列出支持dump的 dotnet 进程,这三类操作相辅相成,不过本文中仅学习dotnet-dump的分析功能。
分析dump文件的第一步是加载文件,采用dotnet-dump analyze命令加载命令,示例如下:
输入runtimes命令查看dump文件中的.net运行时信息。
如果运行其它命令时遇到下面的报错,可能是下载的dotnet-dump工具不支持dump文件关联的.net版本,可以运行dotnet tool uninstall命令卸载后,在参考文献2中找到支持对应.net版本的dotnet-dump工具,再重新安装,本文中需要安装支持.net 6的dotnet。
dotnet tool uninstall --global dotnet-dump
dotnet tool install --global dotnet-dump --version 6.0.351802
重新安装后,再运行clrmodules命令,即可列出进程的托管模块。如下图所示:
dotnet-dump有将近80个分析命令,部分命令还有更复杂的参数,可以使用“help 命令”的形式查看命令的参数说明。
之前测试的dump文件太简单,不少命令执行后都没有结果,还得找个更复杂的dump文件以学习dump文件分析命令。
参考文献:
[1]https://learn.microsoft.com/zh-cn/dotnet/core/diagnostics/dotnet-dump
[2]https://www.nuget.org/packages/dotnet-dump