ダンプ

ダンプは、その作成時におけるプロセスのスナップショットを含むファイルであり、アプリケーションの状態を調べるのに役立ちます。 運用環境または CI 環境などにデバッガーをアタッチするのが困難な場合に、.NET アプリケーションをデバッグするためにタンプを使用できます。 ダンプを使用すると、アプリケーションを停止しなくても、問題のあるプロセスの状態をキャプチャして調べることができます。

ダンプを収集する

ダンプは、アプリを実行しているプラットフォームに応じてさまざまな方法で収集できます。

Note

ダンプには、実行中のプロセスの完全なメモリが含まれている可能性があるため、機密情報が含まれている場合があります。 セキュリティに関する制限事項とガイダンスを考慮して扱うようにしてください。

ヒント

ダンプの収集、分析、その他の注意事項に関してよく寄せられる質問については、「ダンプ: FAQ」を参照してください。

  • 環境変数を使用すると、クラッシュ時にダンプを収集する ようにアプリケーションを構成できます。

  • アプリがまだクラッシュしていない場合は、ダンプを収集することができます。 たとえば、デッドロックが発生していると思われるアプリケーションの状態を確認する場合、クラッシュ時にダンプを収集するように環境変数を構成しても役に立ちません。これは、アプリがまだ実行中であるためです。

  • dotnet-dump は、ダンプを収集するための単純なクロスプラットフォーム コマンド ライン ツールです。 Visual Studiowindbg などの他のいくつかのデバッガー ツールにも、ダンプ収集機能があります。

  • 運用環境でアプリを実行している場合、または分散された方法 (複数のサービス、レプリカ) でアプリを実行している場合、 dotnet-monitor は、ダンプの収集やエグレスなど、多くの一般的なシナリオとアドホック診断調査をサポートします。 これにより、ダンプをリモートまたはトリガー条件で収集できます。

ダンプを分析する

メモリの分析

アプリのメモリが増加し続ける場合は、アプリケーションでメモリ分析を実行できますが、その理由がわからない場合があります。 debug memory leak チュートリアル では、dotnet-sos コマンド dumpheap と gcroot を使用して dotnet CLI ツールを使用してメモリ リークをデバッグする方法について説明します。

Visual Studio のメモリ分析 を使用して、Windows 上のメモリ リークを診断できます。

関連項目

.NET アプリケーションでの問題を診断するのに役立つようにダンプを活用する方法の詳細を参照してください。

  • Linux ダンプのデバッグ チュートリアルでは、Linux で収集されたダンプをデバッグする方法について説明します。

  • デッドロックのデバッグ チュートリアルでは、ダンプを使用して .NET アプリケーションでデッドロックをデバッグする方法について説明します。