我有一个使用 procdump 创建的 .NET Framework 应用程序转储.我可以创建控制台 .NET 框架 4.6.1 应用程序,安装 ClrMd
nuget 包并编写此代码以开始一些检查:
using(var dt = DataTarget.LoadCrashDump(@"C:\temp\dump.dmp"))
{
var rt = dt.ClrVersions.First().CreateRuntime();
Console.WriteLine(rt.ThreadPool.TotalThreads);
}
它工作正常。
如果我对相同的转储执行相同的操作,但在 dotnet core 2.2 控制台应用程序中,我会遇到异常Could not find matching DAC for this runtime
。
为什么它在第一种情况下有效,但在第二种情况下却无效?
最佳答案
为了正确读取转储,ClrMD 加载一个 mscordacwks.dll
匹配(或至少接近匹配)创建转储的运行时版本。由于 dotnet core 与 .NET Framework 不兼容,因此无法加载此 dll。
关于c# - ClrMD:分析 dotnet 核心应用程序中 .NET 框架进程的转储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56211531/