Debugowanie zrzutów systemu Linux
Ten artykuł dotyczy: ✔️ zestaw .NET Core 3.0 SDK i nowsze wersje
Zbieranie zrzutów w systemie Linux
Napiwek
Aby uzyskać często zadawane pytania dotyczące zbierania zrzutów, analizy i innych zastrzeżeń, zobacz Zrzuty: często zadawane pytania.
Dwa zalecane sposoby zbierania zrzutów w systemie Linux to:
dotnet-dump
Narzędzie interfejsu wiersza polecenia- Zmienne środowiskowe , które zbierają zrzuty awarii
Analizowanie zrzutów w systemie Linux
Po zebraniu zrzutu można go przeanalizować za pomocą narzędzia za dotnet-dump analyze
pomocą dotnet-dump
polecenia . Ten krok analizy należy uruchomić na maszynie, która ma taką samą architekturę i dystrybucję systemu Linux, jak środowisko przechwytywane zrzutu.
Narzędzie dotnet-dump
obsługuje wyświetlanie informacji o kodzie platformy .NET, ale nie jest przydatne do zrozumienia problemów z kodem dla innych języków, takich jak C i C++.
Alternatywnie usługa LLDB może służyć do analizowania zrzutów w systemie Linux, co umożliwia analizę kodu zarządzanego i natywnego. Usługa LLDB używa rozszerzenia SOS do debugowania kodu zarządzanego. Narzędzie interfejsu dotnet-sos
wiersza polecenia może służyć do instalowania sosu, który zawiera wiele przydatnych poleceń do debugowania kodu zarządzanego. Aby przeanalizować zrzuty platformy .NET Core, usługi LLDB i SOS wymagają następujących plików binarnych platformy .NET Core ze środowiska, w których utworzono zrzut:
- libmscordaccore.so
- libcoreclr.so
- dotnet (host używany do uruchamiania aplikacji)
W większości przypadków te pliki binarne można pobrać przy użyciu dotnet-symbol
narzędzia . Jeśli nie można pobrać niezbędnych plików binarnych (na przykład jeśli prywatna wersja platformy .NET Core skompilowana dotnet-symbol
ze źródła była używana), może być konieczne skopiowanie plików wymienionych powyżej ze środowiska, w ramach którego utworzono zrzut. Jeśli pliki nie znajdują się obok pliku zrzutu, możesz użyć polecenia setclrpath <path>
LLDB/SOS, aby ustawić ścieżkę, z której mają zostać załadowane, i setsymbolserver -directory <path>
ustawić ścieżkę do wyszukiwania plików symboli.
Po udostępnieniu niezbędnych plików zrzut można załadować w usłudze LLDB, określając hosta dotnet jako plik wykonywalny do debugowania:
lldb --core <dump-file> <host-program>
W poprzednim poleceniu jest ścieżką zrzutu do analizy i <host-program>
jest natywnym programem, <dump-file>
który uruchomił aplikację .NET Core. Zazwyczaj jest dotnet
to plik binarny, chyba że aplikacja jest samodzielna, w takim przypadku jest to nazwa aplikacji bez rozszerzenia .dll .
Po uruchomieniu usługi LLDB może być konieczne użycie setsymbolserver
polecenia , aby wskazać prawidłową lokalizację symboli (setsymbolserver -ms
aby użyć serwera symboli firmy Microsoft lub setsymbolserver -directory <path>
określić ścieżkę lokalną). Aby załadować symbole natywne, uruchom polecenie loadsymbols
. W tym momencie możesz użyć poleceń SOS do przeanalizowania zrzutu.
Uwaga
Bazę danych LLDB można zainstalować za pomocą polecenia sudo apt-get install lldb
Analizowanie zrzutów w systemie Windows
Zrzuty zbierane z maszyny z systemem Linux można również analizować na maszynie z systemem Windows przy użyciu programu Visual Studio, Windbg lub narzędzia dotnet-dump . Zarówno program Visual Studio, jak i Windbg mogą analizować kod natywny i zarządzany, podczas gdy narzędzie dotnet-dump analizuje tylko zarządzany kod.
Uwaga
Program Visual Studio w wersji 16.8 lub nowszej umożliwia otwieranie i analizowanie zrzutów systemu Linux wygenerowanych na platformie .NET Core 3.1.7 lub nowszej.
- Visual Studio — zobacz przewodnik debugowania zrzutu programu Visual Studio.
- Windbg — zrzuty systemu Linux można debugować na windbg, korzystając z tych samych instrukcji , których należy użyć do debugowania zrzutu trybu użytkownika systemu Windows. Użyj wersji x64 windbg dla zrzutów zebranych ze środowiska systemu Linux x64 lub Arm64 i wersji x86 dla zrzutów zebranych ze środowiska x86 systemu Linux.
- dotnet-dump — wyświetl zrzut przy użyciu polecenia dotnet-dump analyze . Użyj wersji x64 dotnet-dump dla zrzutów zebranych ze środowiska systemu Linux x64 lub Arm64 oraz wersji x86 zrzutów zebranych ze środowiska x86 systemu Linux.
Zobacz też
- dotnet-sos , aby uzyskać więcej informacji na temat instalowania rozszerzenia SOS.
- dotnet-symbol , aby uzyskać więcej informacji na temat instalowania i używania narzędzia pobierania symboli.
- Repozytorium diagnostyki platformy .NET Core, aby uzyskać więcej informacji na temat debugowania, w tym przydatne często zadawane pytania.
- Instalowanie usługi LLDB w celu uzyskania instrukcji dotyczących instalowania bazy danych LLDB w systemie Linux lub Mac.
- Ćwiczenie i rozwiązywanie problemów w systemie Linux na potrzeby samouczka dotyczącego debugowania zrzutów awaryjnych w systemie Linux