適用於: .NET Core 2.1、.NET Core 3.1、.NET 5
本文討論如何將核心傾印檔案從Linux計算機複製到另一部電腦。 例如,您會從Linux收集核心傾印檔案,然後將檔案複製到Windows虛擬機 (VM) 進行分析。
必要條件
遵循本節的最低需求是在Linux環境中,至少要從此訓練的前幾節擷取一個核心傾印。 您可以使用由 createdump 或 dotnet-dump 工具所產生的任何核心傾印檔案。
此實驗室的目標
到目前為止,在整個訓練課程模組中,您已在Linux中收集核心傾印檔案,並在相同Linux VM上的調試程式中開啟它們。 如果您無法分析相同 VM 上的傾印,會發生什麼事? 通常,您會從生產環境收集核心傾印檔案,以針對問題進行疑難解答。 但不建議這麼做。 此外,不一定可以在相同的生產計算機上執行偵錯會話。
為了解決此問題,此實驗室系列將涵蓋下列選項,以分析在Linux VM上收集的核心傾印檔案:
- 使用 dotnet-dump 分析在 Windows 子系統 Linux 環境 (WSL) 環境中執行的 Linux VM 上的核心傾印檔案。
- 使用 dotnet-dump 分析在 Docker 容器內執行的 Linux VM 上的核心傾印檔案。
下列練習是以用來裝載 Docker 容器和 WSL2 環境的 Windows 10 型 VM 為基礎。
在實驗室的第一個部分中,您將使用 pscp
命令,引導您完成將核心傾印檔案從 Linux VM 複製到 Windows VM 的程式。 此實驗室也會處理方法,以複製不建議的檔案。
將核心傾印檔案複製到本機 VM
在此定型中針對失敗 ASP.NET 核心應用程式進行偵錯的練習中,您產生了三個手動記憶體轉儲檔案。 現在,您將瞭解如何將這些核心傾印檔案複製到 Windows VM。
請記住,核心傾印檔案包含進程記憶體。 因此,如果進程記憶體使用量很高,核心傾印的大小可能會很大。 您可以優化傳輸,而不是逐一複製每個核心傾印檔案。 若要這樣做,請使用 tar 命令封裝並壓縮它們,以便您將有一個壓縮 的coredumps.tar.gz 檔案,其中包含這三個核心傾印檔案。
如下列螢幕快照所示,您可以使用 tar -czvf coredumps.tar.gz coredump.manual.*
命令來建立壓縮封存盤案。
在上一個範例中,封存盤案 coredumps.tar.gz 位於Linux VM目錄的 home 傾印檔案資料夾中。 目標是將 複製到/home/UserName/coredumps.tar.gz目標 Windows VM 上的 d:\Learn\Linux\Dumps 資料夾。
有數種方式可從Linux VM 複製檔案。 您應該已經熟悉其中一個選項:在 pscp
Windows VM 上使用 命令。 如果您已遵循整個系列,您應該記得第 2.5 部分的此命令 - 將檔案從您的開發環境複製到 Linux VM,然後擷取 Linux 中的檔案。
注意
對於尚未透過本系列第 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
注意
類似於 PuTTY,pscp 會針對私鑰使用 PPK 檔案格式。 如果您只有 PEM 檔案且沒有 PPK,您可以使用 PuTTY 金鑰產生器工具 (PuTTYgen) 將 PEM 格式轉換成 PPK 格式。 這在第 1.1 部分 - 在 Azure 中建立 Linux 虛擬機並加以連線中詳細說明。
如下列螢幕快照所示,命令已成功將coredumps.tar.gz檔案複製到 D:\Learn\Linux\Dumps 資料夾中的本機 VM。
從 Linux 複製檔案的其他選項
有數種方法可將檔案從Linux複製到 Windows VM。 其中一個明顯的選項是在Linux上安裝FTP伺服器,並使用FTP將檔案傳輸到目標 Windows VM。 如果您要選擇此選項,請務必透過 SSH 解決方案設定 FTP 以取得安全性,並避免使用純 FTP 通訊協定,因為這會以純文本傳送使用者名稱、密碼和數據。
另一個選項是將核心傾印檔案 複製到您 ASP.NET Core 應用程式的 wwwroot 資料夾,然後使用網頁瀏覽器加以下載。 這是一個非常糟糕的想法。 請不要試試看! 核心傾印檔案包含進程的所有記憶體。 這表示任何敏感性信息都會包含在核心傾印檔案中。 將這類檔案複製到網頁伺服器表示,即使您未共用URL,您仍會將檔案內的敏感性資訊公開給任何可以存取網頁伺服器的人員。 請考慮這是最後手段的解決方案,因為它涉及的資訊曝光。
成功傳輸之後,您應該在 Windows VM 上至少有一個核心傾印檔案。 您現在可以繼續下一個部分,瞭解如何分析傾印檔案。