mcpField
D
dump-collect

dump-collect

github.com/dotnet开发5.8k3.6k 次安装1 天前更新
代码仓库

关于 dump-collect

dump-collect 是一项技能,用于在 Linux、macOS、Windows 及容器中配置和收集现代 .NET 应用的崩溃转储。它指导通过环境设置启用或执行采集,不涉及转储分析或崩溃排查。

主要功能

  1. 01收集 CoreCLR 和 NativeAOT 转储
  2. 02自动或按需采集
  3. 03提供多平台及容器配置指导
  4. 04仅调整环境配置
  5. 05验证设置并报告转储位置

适用场景

  1. 01为 .NET 应用启用自动转储
  2. 02采集运行中进程的转储
  3. 03配置容器化应用的转储采集

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/dotnet/skills --skill dump-collect

安装后在 Claude Code 中输入/dump-collect确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
container-dumps.md
coreclr-dumps.md
nativeaot-dumps.md

详细介绍

.NET 崩溃转储收集

此技能用于为 Linux、macOS 和 Windows 上的现代 .NET 应用程序(CoreCLR 和 NativeAOT)配置并收集崩溃转储,包括容器中的应用程序。

停止信号

🚨 开始任何工作流前请先阅读。

  • 启用或收集转储后立即停止。 不要打开、分析或分流转储文件。
  • **如果用户已有转储文件,**此技能不涵盖分析。请告知用户分析不在支持范围内。
  • 不要安装分析工具(dotnet-dump analyze、windbg)。只安装收集工具(dotnet-dump collect)。允许在 macOS 上使用 lldb 按需捕获转储——它随 Xcode 命令行工具提供,且不会用于分析。
  • 不要追查崩溃的根本原因。 报告转储文件位置后即可继续。
  • 不要修改应用程序代码。 配置仅限于环境(环境变量、操作系统设置、容器规范)。

步骤 1 — 确定场景

询问或确认:

  1. 目标:启用自动崩溃转储,还是立即从正在运行的进程捕获转储?
  2. 平台:Linux、macOS 还是 Windows?是否在容器中运行(Docker/Kubernetes)?
  3. 运行时: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 — 执行

按照已加载参考文档中的说明配置或收集转储。务必:

  1. 确认转储输出目录存在且具有写入权限,然后再启用收集。
  2. 收集成功后,向用户报告转储文件路径。
  3. 验证配置已生效——对于环境变量,回显其值;对于操作系统设置,读取其值。
  4. 提醒用户:如果临时启用了自动转储,请将其关闭——移除或取消设置 DOTNET_DbgEnableMiniDump 及相关环境变量,以免转储文件不断累积。

评论

支持 Markdown