dump-collect について
dump-collectは、Linux、macOS、Windowsおよびコンテナー上の最新.NETアプリ向けに、クラッシュダンプの設定と収集を支援するスキルです。環境設定による有効化や取得を案内し、ダンプの解析や原因調査は対象外です。
主な機能
- 01CoreCLRとNativeAOTのダンプ収集
- 02自動またはオンデマンドの取得
- 03複数OSとコンテナーの設定案内
- 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 コマンドラインツールに含まれており、分析には使用しません。 - クラッシュの根本原因を追跡しないでください。ダンプファイルの場所を報告して終了してください。
- アプリケーションコードを変更しないでください。 設定は環境のみで行います(環境変数、OS 設定、コンテナー仕様)。
手順 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 — 実行する
読み込んだリファレンスの手順に従って、ダンプを設定または収集してください。必ず次のことを行ってください。
- 収集を有効にする前に、ダンプの出力ディレクトリが存在し、書き込み権限があることを確認してください。
- 収集が成功したら、ダンプファイルのパスをユーザーに報告してください。
- 設定が反映されたことを確認してください。 環境変数の場合はその値を表示し、OS 設定の場合は設定値を読み返してください。
- 一時的に自動ダンプを有効にした場合は、無効にするようユーザーに伝えてください。 ダンプファイルが蓄積しないよう、
DOTNET_DbgEnableMiniDumpと関連する環境変数を削除または解除してください。