Übung 4.1 Analysieren der zentralen Abbilddateien nach dem Kopieren auf einen anderen Computer

Gilt für:   .NET Core 2.1, .NET Core 3.1, .NET 5

In diesem Artikel wird erläutert, wie Sie Die Kernabbilddateien von einem Linux-Computer auf einen anderen kopieren. Beispielsweise erfassen Sie Die kernabbilddateien von Linux und kopieren sie dann auf einen Windows virtuellen Computer (VM), um sie zu analysieren.

Voraussetzungen

Die Mindestanforderung, diesen Abschnitt zu befolgen, besteht darin, mindestens ein Kernabbild aus den vorherigen Abschnitten dieser Schulung in Ihrer Linux-Umgebung zu erfassen. Sie können eine beliebige Kernabbilddatei verwenden, die entweder vom createdump- oder dotnet-dump-Tool generiert wird.

Ziel dieser Übung

Bisher haben Sie in den Schulungsmodulen Die wichtigsten Abbilddateien in Linux gesammelt und in Debuggern auf derselben Linux-VM geöffnet. Was geschieht, wenn Sie die Abbilder auf demselben virtuellen Computer nicht analysieren können? In der Regel erfassen Sie die wichtigsten Abbilddateien aus Ihrer Produktionsumgebung mit der Absicht, ein Problem zu beheben. Dies wird jedoch nicht empfohlen. Außerdem ist es nicht immer möglich, die Debugsitzung auf demselben Produktionscomputer auszuführen.

Um dieses Problem zu beheben, werden in dieser Übungsreihe die folgenden Optionen zum Analysieren der zentralen Abbilddatei behandelt, die auf einem virtuellen Linux-Computer gesammelt wird:

  • Verwenden Sie dotnet-dump, um die Kernabbilddatei auf einer Linux-VM zu analysieren, die innerhalb der Windows Subsystem für Linux (WSL)-Umgebung ausgeführt wird.
  • Verwenden Sie dotnet-dump, um die Kernabbilddatei auf einer Linux-VM zu analysieren, die in einem Docker-Container ausgeführt wird.

Die folgenden Übungen basieren auf einer Windows 10-basierten VM, die zum Hosten eines Docker-Containers und von WSL2-Umgebungen verwendet wurde.

In diesem ersten Teil der Übung werden Sie mithilfe des Befehls durch das Verfahren zum Kopieren von Core-Abbilddateien von einer Linux-VM auf eine Windows VM pscp geführt. In dieser Übung werden auch Methoden zum Kopieren von Dateien behandelt, die nicht empfohlen werden.

Hinweis

Wenn Sie sich nicht mit dem Kopieren von Dateien von der Linux-VM befassen möchten, auf der die Kernabbilddateien auf das Ziel Windows VM generiert wurden, oder wenn Sie die vorherigen Teile nicht befolgt haben und keine Kernabbilddatei haben, ziehen Sie die Verwendung der Beispielkernabbilddateienin Betracht, und überspringen Sie diesen Teil.

Kopieren einer Zentralen Speicherabbilddatei auf Ihren lokalen virtuellen Computer

Während der Übungen in dieser Schulung zum Debuggen einer fehlerhaften ASP.NET Kernanwendung haben Sie drei manuelle Speicherabbilddateien generiert. Jetzt erfahren Sie, wie Sie diese zentralen Abbilddateien auf eine Windows VM kopieren.

Screenshot des Befehls "ll".

Denken Sie daran, dass eine Zentrale Speicherabbilddatei den Prozessspeicher enthält. Daher kann die Größe eines Kernabbilds groß sein, wenn die Speicherauslastung des Prozesses hoch ist. Anstatt jede zentrale Abbilddatei nacheinander zu kopieren, können Sie die Übertragung optimieren. Packen und komprimieren Sie sie zu diesem Zweck mithilfe des Tar-Befehls, sodass Sie eine komprimierte Coredumps.tar.gz-Datei haben, die alle drei Kernabbilddateien enthält.

Wie der folgende Screenshot zeigt, können Sie den tar -czvf coredumps.tar.gz coredump.manual.* Befehl verwenden, um die komprimierte Archivdatei zu erstellen.

Screenshot des Tar-Befehls.

Im vorherigen Beispiel befindet sich die Archivdatei "coredumps.tar.gz" im Ordner "Abbilddateien" im home Verzeichnis auf der Linux-VM. Das Ziel besteht darin, den /home/UserName/coredumps.tar.gz Ordner "d:\Learn\Linux\Dumps" auf den Ziel-Windows virtuellen Computer zu kopieren.

Es gibt mehrere Möglichkeiten, Dateien von einer Linux-VM zu kopieren. Sie sollten bereits mit einer der Optionen vertraut sein: Verwenden des pscp Befehls auf der Windows VM. Wenn Sie die gesamte Reihe befolgt haben, sollten Sie sich diesen Befehl aus Teil 2.5 merken: Kopieren von Dateien aus Ihrer Entwicklungsumgebung auf eine Linux-VM und extrahieren sie dann in Linux.

Hinweis

Für Leser, die teil 2.5 dieser Reihe noch nicht durchgearbeitet haben: Sie führt PuTTY ein und erläutert die grundlegenden Nutzungsoptionen.

Öffnen Sie die Windows-Terminal auf Ihrem Windows virtuellen Computer. (Wenn Sie möchten, können Sie stattdessen ein Eingabeaufforderungsfenster öffnen. Es wird jedoch dringend empfohlen, die Windows-Terminal zu verwenden.) Führen Sie dann den folgenden Befehl aus, um die Datei auf den virtuellen Computer zu kopieren:

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

Hinweis

Ähnlich wie PuTTY verwendet pscp das PPK-Dateiformat für den privaten Schlüssel. Wenn Sie nur über die PEM-Datei verfügen und nicht über das PPK verfügen, können Sie das PEM-Format mithilfe des PuTTY-Schlüsselgeneratortools (PuTTYgen) in das PPK-Format konvertieren. Dies wird in Teil 1.1 – Erstellen eines virtuellen Linux-Computers in Azure und Herstellen einer Verbindung mit diesemausführlich erläutert.

Wie der folgende Screenshot zeigt, hat der Befehl die Datei "coredumps.tar.gz" erfolgreich auf den lokalen virtuellen Computer im Ordner "D:\Learn\Linux\Dumps" kopiert.

Screenshot des ahnetnb-Befehls.

Weitere Optionen zum Kopieren von Dateien aus Linux

Es gibt mehrere Methoden zum Kopieren von Dateien von Linux auf eine Windows VM. Eine der offensichtlichen Optionen besteht darin, einen FTP-Server unter Linux zu installieren und die Dateien per FTP an die Ziel-Windows VM zu übertragen. Wenn Sie diese Option auswählen würden, müssen Sie ein FTP über eine SSH-Lösung für die Sicherheit einrichten, und vermeiden Sie die Verwendung eines einfachen FTP-Protokolls, da dadurch Benutzername, Kennwort und Daten in Klartext gesendet werden.

Eine weitere Möglichkeit besteht darin, die wichtigsten Abbilddateien in den wwwroot-Ordner Ihrer ASP.NET Core-Anwendung zu kopieren und sie dann mithilfe eines Webbrowsers herunterzuladen. Dies ist eine wirklich schlechte Idee. Versuchen Sie es nicht! Eine Zentrale Speicherabbilddatei enthält den gesamten Speicher Des Prozesses. Dies bedeutet, dass alle vertraulichen Informationen in die Kernabbilddatei eingeschlossen werden. Das Kopieren solcher Dateien auf einen Webserver bedeutet, dass Sie die vertraulichen Informationen in der Datei für jeden verfügbar machen, der auf Ihren Webserver zugreifen kann, auch wenn Sie die URL nicht freigeben. Betrachten Sie dies aufgrund der damit verbundenen Informationsentlichtung als letzte Möglichkeit.

Nach einer erfolgreichen Übertragung sollten Sie mindestens eine Kernabbilddatei auf Ihrem Windows virtuellen Computer haben. Sie können nun zum nächsten Teil wechseln, um zu verstehen, wie die Abbilddateien analysiert werden.

Nächste Schritte

Übung 4.2 Analysieren der Kernabbilddateien auf einem anderen Computer – Verwenden von WSL zum Öffnen von Kernabbilddateien