使用dotnet-dump分析内存dump时执行dumpheap -stat遇No CLR runtime found错误
问题场景
在Windows终端执行dotnet-dump analyze C:\Users\Admin\dump_20231108_113908.dmp进入分析会话后,执行dumpheap -stat命令触发以下错误:
ERROR: No CLR runtime found. This means that a .NET runtime module or the DAC for the runtime can not be found or downloaded.
中文释义:错误:未找到CLR运行时,说明无法找到或下载.NET运行时模块或运行时DAC
解决方案
匹配dump对应的.NET版本
本地必须安装生成dump文件的进程所使用的完整.NET runtime版本(含主、次版本,例如.NET 6.0.12)。用dotnet --list-runtimes查看已安装的runtime,若缺失则下载对应版本安装。手动指定DAC路径
若自动下载DAC失败,可手动定位对应版本的DAC文件(通常在C:\Program Files\dotnet\shared\Microsoft.NETCore.App\<版本号>\目录下,文件名为mscordacwks.dll),然后在dotnet-dump分析会话中执行:setclrpath <DAC文件所在的目录路径>完成后重新执行
dumpheap -stat。验证dump文件完整性
确认dump文件未损坏,可通过dotnet-dump collect -p <目标进程ID>重新生成内存dump,确保生成过程中进程未异常终止。提升终端权限
部分场景下权限不足会导致dotnet-dump无法访问或下载runtime模块,右键终端选择“以管理员身份运行”后再执行分析操作。
内容的提问来源于stack exchange,提问作者Atahan Ceylan

