关于 dump-collect
dump-collect 是一项技能,用于在 Linux、macOS、Windows 及容器中配置和收集现代 .NET 应用的崩溃转储。它指导通过环境设置启用或执行采集,不涉及转储分析或崩溃排查。
主要功能
- 01收集 CoreCLR 和 NativeAOT 转储
- 02自动或按需采集
- 03提供多平台及容器配置指导
- 04仅调整环境配置
- 05验证设置并报告转储位置
适用场景
- 01为 .NET 应用启用自动转储
- 02采集运行中进程的转储
- 03配置容器化应用的转储采集
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ dotnet/ skills --skill dump-collect安装后在 Claude Code 中输入/dump-collect确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/container-dumps.mdcoreclr-dumps.mdnativeaot-dumps.md详细介绍
.NET 崩溃转储收集
此技能用于为 Linux、macOS 和 Windows 上的现代 .NET 应用程序(CoreCLR 和 NativeAOT)配置并收集崩溃转储,包括容器中的应用程序。
停止信号
🚨 开始任何工作流前请先阅读。
- 启用或收集转储后立即停止。 不要打开、分析或分流转储文件。
- **如果用户已有转储文件,**此技能不涵盖分析。请告知用户分析不在支持范围内。
- 不要安装分析工具(dotnet-dump analyze、windbg)。只安装收集工具(dotnet-dump collect)。允许在 macOS 上使用
lldb按需捕获转储——它随 Xcode 命令行工具提供,且不会用于分析。 - 不要追查崩溃的根本原因。 报告转储文件位置后即可继续。
- 不要修改应用程序代码。 配置仅限于环境(环境变量、操作系统设置、容器规范)。
步骤 1 — 确定场景
询问或确认:
- 目标:启用自动崩溃转储,还是立即从正在运行的进程捕获转储?
- 平台:Linux、macOS 还是 Windows?是否在容器中运行(Docker/Kubernetes)?
- 运行时:CoreCLR 还是 NativeAOT?
检测 CoreCLR 与 NativeAOT
从二进制文件检测(Linux/macOS):
# CoreCLR — has IL metadata / managed entry point
strings <binary> | grep -q "CorExeMain" && echo "CoreCLR"
# NativeAOT — has Redhawk runtime symbols
strings <binary> | grep -q "Rhp" && echo "NativeAOT"
# On macOS/Linux, also try:
nm <binary> 2>/dev/null | grep -qi "Rhp" && echo "NativeAOT"
从二进制文件检测(Windows):
# CoreCLR — has a CLI header (IL entry point)
dumpbin /clrheader <binary.exe> | Select-String "CLI Header" -Quiet
# NativeAOT — no CLI header, has Redhawk symbols
dumpbin /symbols <binary.exe> | Select-String "Rhp" -Quiet
从正在运行的进程检测(Linux):
# Resolve the binary, then use the same file checks
BINARY=$(readlink /proc/<pid>/exe)
strings "$BINARY" | grep -q "CorExeMain" && echo "CoreCLR" || echo "NativeAOT"
从正在运行的进程检测(macOS):
# Resolve the binary path from the running process
BINARY=$(ps -o comm= -p <pid>)
strings "$BINARY" | grep -q "CorExeMain" && echo "CoreCLR" || echo "NativeAOT"
从正在运行的进程检测(Windows PowerShell):
# CoreCLR — loads coreclr.dll
(Get-Process -Id <pid>).Modules.ModuleName -contains "coreclr.dll"
# .NET Framework — loads clr.dll (this skill does not apply)
(Get-Process -Id <pid>).Modules.ModuleName -contains "clr.dll"
如果应用是 .NET Framework(
clr.dll),请停止。 此技能仅涵盖现代 .NET(CoreCLR 和 NativeAOT)。如果未检测到 CoreCLR 或 NativeAOT,请停止。 此技能仅适用于 .NET 应用程序——不要继续。
步骤 2 — 加载相应参考文档
根据步骤 1 中确定的场景,阅读相关参考文件:
| 场景 | 参考文档 |
|---|---|
| CoreCLR 应用(任意平台) | references/coreclr-dumps.md |
| NativeAOT 应用(任意平台) | references/nativeaot-dumps.md |
| Docker 或 Kubernetes 中的任意应用 | references/container-dumps.md(然后再加载运行时对应的参考文档) |
步骤 3 — 执行
按照已加载参考文档中的说明配置或收集转储。务必:
- 确认转储输出目录存在且具有写入权限,然后再启用收集。
- 收集成功后,向用户报告转储文件路径。
- 验证配置已生效——对于环境变量,回显其值;对于操作系统设置,读取其值。
- 提醒用户:如果临时启用了自动转储,请将其关闭——移除或取消设置
DOTNET_DbgEnableMiniDump及相关环境变量,以免转储文件不断累积。
评论
支持 Markdown