Udostępnij za pośrednictwem


Laboratorium 4.1 Analizowanie podstawowych plików zrzutu po skopiowaniu ich na inną maszynę

Dotyczy: .NET Core 2.1, .NET Core 3.1, .NET 5

W tym artykule omówiono sposób kopiowania podstawowych plików zrzutu z maszyny z systemem Linux do innego. Na przykład zbierasz pliki zrzutu podstawowego z systemu Linux, a następnie kopiujesz je do maszyny wirtualnej z systemem Windows w celu przeanalizowania.

Wymagania wstępne

Minimalnym wymaganiem do przestrzegania tej sekcji jest posiadanie co najmniej jednego podstawowego zrzutu przechwyconego w środowisku systemu Linux z poprzednich sekcji tego szkolenia. Możesz użyć dowolnego pliku zrzutu rdzenia wygenerowanego przez narzędzie createdump lub dotnet-dump.

Cel tego laboratorium

Do tej pory w modułach szkoleniowych zebrano pliki zrzutu podstawowego w systemie Linux i otwarto je w debugerach na tej samej maszynie wirtualnej z systemem Linux. Co się stanie, jeśli nie możesz przeanalizować zrzutów na tej samej maszynie wirtualnej? Zazwyczaj należy zebrać podstawowe pliki zrzutu ze środowiska produkcyjnego z zamiarem rozwiązania problemu. Ale nie jest to zalecane. Ponadto nie zawsze można uruchomić sesję debugowania na tym samym komputerze produkcyjnym.

Aby rozwiązać ten problem, ta seria laboratorium obejmuje następujące opcje analizowania podstawowego pliku zrzutu zebranego na maszynie wirtualnej z systemem Linux:

  • Użyj polecenia dotnet-dump, aby przeanalizować plik zrzutu podstawowego na maszynie wirtualnej z systemem Linux działającej w środowisku podsystemu Windows dla systemu Linux (WSL).
  • Użyj polecenia dotnet-dump, aby przeanalizować plik podstawowego zrzutu na maszynie wirtualnej z systemem Linux uruchomionej wewnątrz kontenera platformy Docker.

Poniższe ćwiczenia są oparte na maszynie wirtualnej z systemem Windows 10, która została użyta do hostowania kontenera platformy Docker i środowisk WSL2.

W pierwszej części laboratorium przedstawiono procedurę kopiowania plików zrzutu podstawowego z maszyny wirtualnej z systemem Linux do maszyny wirtualnej z systemem Windows przy użyciu pscp polecenia . To laboratorium zajmie się również metodami kopiowania plików, które nie są zalecane.

Kopiowanie pliku zrzutu podstawowego do lokalnej maszyny wirtualnej

Podczas ćwiczeń w ramach tego szkolenia na potrzeby debugowania nieudanej ASP.NET podstawowej aplikacji wygenerowano trzy pliki zrzutu pamięci ręcznej. Teraz dowiesz się, jak skopiować te podstawowe pliki zrzutu do maszyny wirtualnej z systemem Windows.

Zrzut ekranu przedstawiający polecenie ll.

Pamiętaj, że podstawowy plik zrzutu zawiera pamięć procesu. W związku z tym rozmiar zrzutu rdzenia może być duży, jeśli użycie pamięci procesu jest wysokie. Zamiast kopiować każdy plik zrzutu rdzenia jeden po drugim, można zoptymalizować transfer. W tym celu spakuj je i skompresuj przy użyciu polecenia tar, aby mieć jeden skompresowany plik coredumps.tar.gz zawierający wszystkie trzy podstawowe pliki zrzutu.

Jak pokazano na poniższym zrzucie ekranu, możesz użyć tar -czvf coredumps.tar.gz coredump.manual.* polecenia , aby utworzyć skompresowany plik archiwum.

Zrzut ekranu przedstawiający polecenie tar.

W poprzednim przykładzie plik archiwum coredumps.tar.gz znajduje się w folderze plików zrzutu w home katalogu na maszynie wirtualnej z systemem Linux. Celem jest skopiowanie /home/UserName/coredumps.tar.gz folderu d :\Learn\Linux\Dumps na docelowej maszynie wirtualnej z systemem Windows.

Istnieje kilka sposobów kopiowania plików z maszyny wirtualnej z systemem Linux. Musisz już zapoznać się z jedną z opcji: używanie pscp polecenia na maszynie wirtualnej z systemem Windows. Jeśli wykonano całą serię, należy pamiętać to polecenie z części 2.5 — kopiowanie plików ze środowiska deweloperskiego na maszynę wirtualną z systemem Linux, a następnie wyodrębnianie plików w systemie Linux.

Uwaga 16.

Dla czytelników, którzy nie pracowali przez część 2.5 tej serii: przedstawia PuTTY i omawia podstawowe opcje użycia.

Otwórz Terminal Windows na maszynie wirtualnej z systemem Windows. (Jeśli wolisz, możesz otworzyć okno wiersza polecenia. Zdecydowanie zalecamy jednak użycie Terminal Windows). Następnie uruchom następujące polecenie, aby skopiować plik na maszynę wirtualną:

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

Uwaga 16.

Podobnie jak PuTTY, program pscp używa formatu pliku PPK dla klucza prywatnego. Jeśli masz tylko plik PEM i nie masz ppk, możesz przekonwertować format PEM na format PPK przy użyciu narzędzia PuTTY Key Generator (PuTTYGen). Wyjaśniono to szczegółowo w części 1.1 — Tworzenie maszyny wirtualnej z systemem Linux na platformie Azure i nawiązywanie z nim połączenia.

Jak pokazano na poniższym zrzucie ekranu, polecenie pomyślnie skopiowało plik coredumps.tar.gz do lokalnej maszyny wirtualnej w folderze D:\Learn\Linux\Dumps .

Zrzut ekranu przedstawiający polecenie ahnetnb.

Inne opcje kopiowania plików z systemu Linux

Istnieje kilka metod kopiowania plików z systemu Linux do maszyny wirtualnej z systemem Windows. Jedną z oczywistych opcji jest zainstalowanie serwera FTP w systemie Linux i użycie protokołu FTP do transferu plików do docelowej maszyny wirtualnej z systemem Windows. Jeśli wybrano tę opcję, upewnij się, że skonfigurowano protokół FTP za pośrednictwem rozwiązania SSH na potrzeby zabezpieczeń i unikaj używania zwykłego protokołu FTP, ponieważ spowoduje to wysłanie nazwy użytkownika, hasła i danych w postaci zwykłego tekstu.

Inną opcją jest skopiowanie podstawowych plików zrzutu do folderu wwwroot aplikacji ASP.NET Core, a następnie pobranie ich przy użyciu przeglądarki internetowej. To naprawdę zły pomysł. Nie próbuj tego! Plik zrzutu podstawowego zawiera całą pamięć procesu. Oznacza to, że wszystkie poufne informacje zostaną uwzględnione w pliku zrzutu podstawowego. Kopiowanie takich plików na serwer sieci Web oznacza, że ujawnisz poufne informacje w pliku wszystkim osobom, które mogą uzyskać dostęp do serwera internetowego, nawet jeśli nie udostępnisz adresu URL. Rozważmy to jako rozwiązanie ostatniej przyczyny ze względu na ujawnienie informacji, które obejmuje.

Po pomyślnym przeniesieniu na maszynie wirtualnej z systemem Windows powinien znajdować się co najmniej jeden plik zrzutu rdzenia. Teraz możesz przejść do następnej części, aby dowiedzieć się, jak analizować pliki zrzutu.

Następne kroki

Laboratorium 4.2 Analizowanie podstawowych plików zrzutu na innym komputerze — otwieranie podstawowych plików zrzutu za pomocą programu WSL