次の方法で共有


ラボ 4.1 コア ダンプ ファイルを別のコンピューターにコピーした後に分析する

適用対象: .NET Core 2.1、.NET Core 3.1、.NET 5

この記事では、Linux マシンから別のマシンにコア ダンプ ファイルをコピーする方法について説明します。 たとえば、Linux からコア ダンプ ファイルを収集し、それらを Windows 仮想マシン (VM) にコピーして分析します。

前提条件

このセクションに従う最小要件は、このトレーニングの前のセクションの Linux 環境で少なくとも 1 つのコア ダンプをキャプチャすることです。 createdump または dotnet-dump ツールによって生成される任意のコア ダンプ ファイルを使用できます。

このラボの目標

ここまでのトレーニング モジュールでは、Linux でコア ダンプ ファイルを収集し、同じ Linux VM 上のデバッガーで開きました。 同じ VM 上のダンプを分析できない場合はどうなりますか? 通常は、問題のトラブルシューティングを目的として、運用環境からコア ダンプ ファイルを収集します。 ただし、これはお勧めしません。 また、同じ運用コンピューターでデバッグ セッションを実行できるわけではありません。

この問題に対処するために、このラボ シリーズでは、Linux VM で収集されたコア ダンプ ファイルを分析するための次のオプションについて説明します。

  • dotnet-dump を使用して、Windows Subsystem For Linux (WSL) 環境内で実行されている Linux VM 上のコア ダンプ ファイルを分析します。
  • dotnet-dump を使用して、Docker コンテナー内で実行されている Linux VM 上のコア ダンプ ファイルを分析します。

次の演習は、Docker コンテナーと WSL2 環境をホストするために使用された Windows 10 ベースの VM に基づいています。

ラボのこの最初の部分では、 pscp コマンドを使用して、Linux VM から Windows VM にコア ダンプ ファイルをコピーする手順について説明します。 このラボでは、推奨されないファイルをコピーするメソッドにも対処します。

コア ダンプ ファイルをローカル VM にコピーする

失敗したコア アプリケーションをデバッグするためのこのトレーニングの演習 ASP.NET では、3 つの手動メモリ ダンプ ファイルを生成しました。 次に、これらのコア ダンプ ファイルを Windows VM にコピーする方法について説明します。

ll コマンドのスクリーンショット。

コア ダンプ ファイルにはプロセス メモリが含まれていることに注意してください。 そのため、プロセス メモリ使用率が高い場合は、コア ダンプのサイズが大きくなる可能性があります。 各コア ダンプ ファイルを 1 つずつコピーする代わりに、転送を最適化できます。 これを行うには、tar コマンドを使用してパッケージ化して圧縮し、3 つのコア ダンプ ファイルをすべて含む 1 つの圧縮 coredumps.tar.gz ファイルを作成します。

次のスクリーンショットに示すように、 tar -czvf coredumps.tar.gz coredump.manual.* コマンドを使用して圧縮アーカイブ ファイルを作成できます。

tar コマンドのスクリーンショット。

前の例では、アーカイブ ファイル coredumps.tar.gz は、Linux VM 上の home ディレクトリにあるダンプ ファイル フォルダーにあります。 目的は、ターゲット Windows VM の d:\Learn\Linux\Dumps フォルダーに/home/UserName/coredumps.tar.gzをコピーすることです。

Linux VM からファイルをコピーするには、いくつかの方法があります。 Windows VM で pscp コマンドを使用する方法の 1 つについて、既に理解している必要があります。 シリーズ全体に従っている場合は、 Part 2.5 - 開発環境から Linux VM にファイルをコピーし、Linux でファイルを抽出するからこのコマンドを覚えている必要があります。

Note

このシリーズのパート 2.5 で作業していない読者向け: PuTTY を紹介し 基本的な使用オプションについて説明します。

Windows VM でWindows ターミナルを開きます。 (必要に応じて、代わりにコマンド プロンプト ウィンドウを開くことができます。ただし、Windows ターミナルを使用することを強くお勧めします。次に、次のコマンドを実行して、ファイルを VM にコピーします。

pscp -i D:\Learn\Linux\BuggyAmb-Ubuntu-Training_key.ppk <UserName>@buggyamb:/home/<UserName>/dumps/coredumps.tar.gz D:\Learn\Linux\Dumps\coredumps.tar.gz

Note

PuTTY と同様に、pscp は秘密キーに PPK ファイル形式を使用します。 PEMファイルだけを持っていて、PPKがない場合は、PuTTYキージェネレータツール(PuTTYgen)を使用してPEM形式をPPK形式に変換できます。 これについては、「 パート 1.1 - Azure での Linux 仮想マシンの作成とそれに接続するで詳しく説明します。

次のスクリーンショットに示すように、コマンドは D:\Learn\Linux\Dumps フォルダー内のローカル VM にcoredumps.tar.gz ファイルを正常にコピーしました。

ahnetnb コマンドのスクリーンショット。

Linux からファイルをコピーするその他のオプション

Linux から Windows VM にファイルをコピーするには、いくつかの方法があります。 明らかなオプションの 1 つは、Linux に FTP サーバーをインストールし、FTP を使用してターゲットの Windows VM にファイルを転送することです。 このオプションを選択する場合は、セキュリティのために SSH ソリューション経由で FTP を設定し、プレーン FTP プロトコルを使用しないようにしてください。これは、ユーザー名、パスワード、およびデータがクリア テキストで送信されるためです。

もう 1 つのオプションは、コア ダンプ ファイルを ASP.NET Core アプリケーションの wwwroot フォルダーにコピーし、Web ブラウザーを使用してダウンロードすることです。 これは本当に悪い考えです。 これを試さないでください。 コア ダンプ ファイルには、プロセスのすべてのメモリが含まれています。 これは、機密情報がコア ダンプ ファイルに含まれることを意味します。 このようなファイルを Web サーバーにコピーすると、URL を共有していない場合でも、Web サーバーにアクセスできるすべてのユーザーにファイル内の機密情報が公開されます。 これは、関連する情報公開のために、最後の手段の解決策と考えてください。

転送が成功すると、Windows VM に少なくとも 1 つのコア ダンプ ファイルが必要です。 次のパートに進んで、ダンプ ファイルを分析する方法を理解できるようになりました。

次のステップ

ラボ 4.2 別のコンピューター上のコア ダンプ ファイルを分析する - WSL を使用してコア ダンプ ファイルを開く