鸣大钟一次!
注入电流,点亮数据中心,默念主名…
鸣大钟两次!
敲击回车,启动集群,连接网络,祈求吾主降临…
鸣大钟三次!
齐声歌唱,赞美全知全能之神!
如前文所述,DebugDiag 是一个非常好用的工具,可以自动化分析 dump 文件。
但微软爸爸在坑人这件事上永不止步。DebugDiag 读取.net4.8 dump文件选择内存分析会报错。

观察发现程序异常堆栈在 Microsoft.Diagnostics.Runtime.dll 中,该 dll 是分析 dump 文件的核心类库,最新版本已是 4.0.0-beta,但 DebugDiag 仍引用 0.9.2 这一上古版本。
简单替换升级 dll,发现报错 Method Not Found 找不到方法,反编译比较发现核心对象的属性取值方法都发生了变化,接口变化超过 50%。(微软真不做人啊)
这一史诗级的接口变更,对人类来说可能需要 2 周或更多时间进行处理,但交给 AI 处理则只需抽皮鞭奉上祷告,仅耗时 2 天就完成了任务。(Kiro 消耗 128 个基数 Credits )
项目地址:Fix_DebugDiag。反编译并修复了 ClrMemDiagExt.dll,DebugDiag.AnalysisRules.dll,DebugDiag.DotNet.dll 这 3 个 dll。替换 dll 后即可正常分析 .net4.8 的 dump 文件了。
但依旧还有一项问题未解决,MemoryAnalysis 任务中会产生一个异常。
Type: System.NullReferenceException
Stack Trace:
DebugDiag.AnalysisRules.INTHeap2.get_HeapType()
DebugDiag.AnalysisRules.HeapFunctionsImpl.AnalyzeAndReportHeapInfo()
除上述问题外,进行大 dump 文件分析时还会遇到一个超时问题,超时后程序取消生成分析报告,可以通过更改配置文件中的超时时间配置解决。(默认 60s 也太短了)
/AnalysisRules/DebugDiag.AnalysisRules.dll.config
<add key="GCRootTimeout" value="3600"/>


修改后,余裕余裕:
