其他
为现代 .NET(CoreCLR/NativeAOT)应用配…
当需要为 CoreCLR 或 NativeAOT 的 .NET 应用启用自动崩溃转储,或从正在运行的进程采集 dump(含容器)时使用;只负责收集,不负责分析。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 35/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 38/100 ×0.15
适用场景
为现代 .NET(CoreCLR/Nat特定
解决思路
- 开始任何流程前先阅读停止信号:启用或采集 dump 后停止,不要打开、分析或分诊 dump 文件。
- 如果用户已有 dump 文件,说明本技能不涵盖分析,分析超出范围。
- 不要安装分析工具(dotnet-dump analyze、windbg);只安装采集工具(dotnet-dump collect)。macOS 上允许使用 lldb 按需采集 dump,因为 lldb 随 Xcode command-line tools 提供且不用于分析。
- 不要追踪崩溃根因;报告 dump 文件位置后继续。
- 不要修改应用代码;配置仅限环境(环境变量、OS 设置、容器规格)。
- 询问或确定目标:启用自动崩溃 dump,还是立即从正在运行的进程采集 dump?
- 询问或确定平台:Linux、macOS、Windows?是否运行在容器(Docker/Kubernetes)中?
- 询问或确定运行时:CoreCLR 还是 NativeAOT?
- 从二进制文件检测 CoreCLR vs NativeAOT(Linux/macOS):运行 `strings <binary> | grep -q "CorExeMain" && echo "CoreCLR"`。
- 从二进制文件检测 NativeAOT(Linux/macOS):运行 `strings <binary> | grep -q "Rhp" && echo "NativeAOT"`。
- 从二进制文件检测 NativeAOT(Linux/macOS):运行 `nm <binary> 2>/dev/null | grep -qi "Rhp" && echo "NativeAOT"`。
- 从二进制文件检测 CoreCLR(Windows):运行 `dumpbin /clrheader <binary.exe> | Select-String "CLI Header" -Quiet`。
- 从二进制文件检测 NativeAOT(Windows):运行 `dumpbin /symbols <binary.exe> | Select-String "Rhp" -Quiet`。
- 从正在运行的进程检测 Linux:运行 `BINARY=$(readlink /proc/<pid>/exe)`,再运行 `strings "$BINARY" | grep -q "CorExeMain" && echo "CoreCLR" || echo "NativeAOT"`。
- 从正在运行的进程检测 macOS:运行 `BINARY=$(ps -o comm= -p <pid>)`,再运行 `strings "$BINARY" | grep -q "CorExeMain" && echo "CoreCLR" || echo "NativeAOT"`。
- 从正在运行的进程检测 Windows PowerShell:运行 `(Get-Process -Id <pid>).Modules.ModuleName -contains "coreclr.dll"` 判断 CoreCLR;运行 `(Get-Process -Id <pid>).Modules.ModuleName -contains "clr.dll"` 判断 .NET Framework。
- 如果应用是 .NET Framework(clr.dll),停止;本技能只覆盖现代 .NET(CoreCLR 和 NativeAOT)。
- 如果既未检测到 CoreCLR 也未检测到 NativeAOT,停止;本技能只适用于 .NET 应用,不要继续。
- 根据 Step 1 场景加载相应参考文件:CoreCLR 应用(任意平台)读取 `references/coreclr-dumps.md`。
- 根据 Step 1 场景加载相应参考文件:NativeAOT 应用(任意平台)读取 `references/nativeaot-dumps.md`。
- 根据 Step 1 场景加载相应参考文件:任何 Docker/Kubernetes 中的应用读取 `references/container-dumps.md`,然后再加载运行时特定参考。
- 按已加载参考中的说明配置或采集 dump。
- 启用采集前,确认 dump 输出目录存在并有写权限。
- 采集成功后,向用户报告 dump 文件路径。
- 验证配置已生效——环境变量则 echo 它们;OS 设置则读回。
- 如果临时启用了自动 dump,提醒用户禁用——移除或取消 `DOTNET_DbgEnableMiniDump` 及相关环境变量,避免累积 dump 文件。
适用边界 · 注意事项
- 分析或调试 dump,或使用 lldb/windbg/dotnet-dump analyze 做事后调查时。
- 做性能分析或跟踪时。
- 处理 .NET Framework 进程时。