mcpField
D
dump-collect

dump-collect

github.com/dotnet開発5.8k3.6k 回インストール1 日前に更新
リポジトリ

dump-collect について

dump-collectは、Linux、macOS、Windowsおよびコンテナー上の最新.NETアプリ向けに、クラッシュダンプの設定と収集を支援するスキルです。環境設定による有効化や取得を案内し、ダンプの解析や原因調査は対象外です。

主な機能

  1. 01CoreCLRとNativeAOTのダンプ収集
  2. 02自動またはオンデマンドの取得
  3. 03複数OSとコンテナーの設定案内
  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 コマンドラインツールに含まれており、分析には使用しません。
  • クラッシュの根本原因を追跡しないでください。ダンプファイルの場所を報告して終了してください。
  • アプリケーションコードを変更しないでください。 設定は環境のみで行います(環境変数、OS 設定、コンテナー仕様)。

手順 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. 設定が反映されたことを確認してください。 環境変数の場合はその値を表示し、OS 設定の場合は設定値を読み返してください。
  4. 一時的に自動ダンプを有効にした場合は、無効にするようユーザーに伝えてください。 ダンプファイルが蓄積しないよう、DOTNET_DbgEnableMiniDump と関連する環境変数を削除または解除してください。

コメント