Jakie narzędzia diagnostyczne są dostępne na platformie .NET Core?
Oprogramowanie nie zawsze zachowuje się zgodnie z oczekiwaniami, ale platforma .NET Core ma narzędzia i interfejsy API, które ułatwiają szybkie i skuteczne diagnozowanie tych problemów.
Ten artykuł ułatwia znalezienie różnych potrzebnych narzędzi.
Debugery umożliwiają interakcję z programem. Wstrzymanie, przyrostowe wykonywanie, badanie i wznawianie zapewnia wgląd w zachowanie kodu. Debuger to dobry wybór do diagnozowania problemów funkcjonalnych, które można łatwo odtworzyć.
Testowanie jednostkowe to kluczowy składnik ciągłej integracji i wdrażania wysokiej jakości oprogramowania. Testy jednostkowe zostały zaprojektowane tak, aby zapewnić wczesne ostrzeżenie podczas przerywania czegoś.
Platforma .NET obsługuje standardowe techniki instrumentacji w branży przy użyciu metryk, dzienników i rozproszonych śladów. Instrumentacja to kod dodawany do projektu oprogramowania w celu zarejestrowania tego, co robi. Te informacje można następnie zbierać w plikach, bazach danych lub w pamięci i analizować w celu zrozumienia sposobu działania programu programowego. Jest to często używane w środowiskach produkcyjnych do monitorowania problemów i diagnozowania ich. Środowisko uruchomieniowe platformy .NET ma wbudowaną instrumentację, którą można opcjonalnie włączyć i interfejsy API, które umożliwiają dodawanie niestandardowej instrumentacji wyspecjalizowanej dla aplikacji.
Metryki to pomiary liczbowe rejestrowane w czasie w celu monitorowania wydajności i kondycji aplikacji. Metryki są często używane do generowania alertów w przypadku wykrycia potencjalnych problemów. Metryki mają bardzo niską wydajność i wiele usług konfiguruje je jako zawsze włączone dane telemetryczne.
Rejestrowanie to technika, w której kod jest instrumentowany do tworzenia dziennika, rekord interesujących zdarzeń, które wystąpiły podczas uruchamiania programu. Często zestaw zdarzeń dziennika jest konfigurowany domyślnie i bardziej rozbudowane rejestrowanie można włączyć na żądanie, aby zdiagnozować konkretne problemy. Obciążenie wydajności jest zmienne w zależności od ilości rejestrowanych danych.
Śledzenie rozproszone to wyspecjalizowana forma rejestrowania, która ułatwia lokalizowanie błędów i problemów z wydajnością w aplikacjach rozproszonych na wielu maszynach lub procesach. Ta technika śledzi żądania przez aplikację korelując razem pracę wykonywaną przez różne składniki aplikacji i oddzielając ją od innej pracy, którą aplikacja może wykonywać dla współbieżnych żądań. Istnieje możliwość śledzenia każdego żądania i próbkowania można opcjonalnie stosować w celu ograniczenia obciążenia związanego z wydajnością.
Zrzut to plik zawierający migawkę procesu podczas tworzenia. Mogą one być przydatne do badania stanu aplikacji na potrzeby debugowania.
Symbole to mapowanie między kodem źródłowym a plikiem binarnym utworzonym przez kompilator. Są one często używane przez debugery platformy .NET do rozpoznawania numerów wierszy źródłowych, nazw zmiennych lokalnych i innych typów informacji diagnostycznych.
Te same narzędzia diagnostyczne, które są używane w niekontenerowanych środowiskach systemu Linux, mogą być również używane do zbierania diagnostyki w kontenerach. Wystarczy kilka zmian użycia, aby upewnić się, że narzędzia działają w kontenerze platformy Docker.
dotnet-counters to narzędzie do monitorowania wydajności na potrzeby monitorowania kondycji pierwszego poziomu i badania wydajności. Obserwuje ona wartości liczników wydajności opublikowane za pośrednictwem interfejsu EventCounter API. Na przykład możesz szybko monitorować elementy, takie jak użycie procesora CPU lub szybkość wyjątków zgłaszanych w aplikacji platformy .NET Core.
Narzędzie dotnet-dump to sposób zbierania i analizowania zrzutów podstawowych Windows i Linux bez natywnego debugera.
Narzędzie dotnet-gcdump to sposób zbierania zrzutów GC (modułu odśmiecenia pamięci) na żywo procesów platformy .NET.
Platforma .NET Core zawiera elementy nazywane EventPipe
danymi diagnostycznymi, za pomocą których są uwidocznione dane diagnostyczne. Narzędzie dotnet-trace umożliwia korzystanie z interesujących danych profilowania z aplikacji, które mogą pomóc w scenariuszach, w których konieczne jest spowolnienie działania aplikacji.
Narzędzie dotnet-stack umożliwia szybkie drukowanie zarządzanych stosów dla wszystkich wątków w uruchomionym procesie platformy .NET.
dotnet-symbol pobiera pliki (symbole, DAC/DBI, pliki hosta itp.) potrzebne do otwarcia podstawowego zrzutu lub minidump. Użyj tego narzędzia, jeśli potrzebujesz symboli i modułów, aby debugować plik zrzutu przechwycony na innej maszynie.
dotnet-sos instaluje rozszerzenie debugowania SOS w systemach Linux i macOS (i na Windows, jeśli używasz narzędzia Windbg/cdb).
PerfCollect to skrypt powłoki bash, którego można użyć do zbierania śladów za pomocą perf
polecenia i LTTng
do bardziej szczegółowej analizy wydajności aplikacji platformy .NET działających w dystrybucjach systemu Linux.
Biblioteka klienta diagnostyki umożliwia pisanie własnego niestandardowego narzędzia diagnostycznego najlepiej dopasowanego do scenariusza diagnostycznego. Wyszukaj informacje w dokumentacji interfejsu API klienta Microsoft.Diagnostics.NETCore.Client.
Samouczek: debugowanie przecieku pamięci przeprowadzi cię przez znalezienie przecieku pamięci. Narzędzie dotnet-counters służy do potwierdzania wycieku, a narzędzie dotnet-dump służy do diagnozowania wycieku.
Samouczek: debugowanie wysokiego użycia procesora CPU przeprowadzi Cię przez badanie wysokiego użycia procesora CPU. Używa narzędzia dotnet-counters w celu potwierdzenia wysokiego użycia procesora CPU. Następnie przeprowadzi Cię przez proces używania funkcji Trace for performance analysis utility (dotnet-trace
) lub Linux perf
do zbierania i wyświetlania profilu użycia procesora CPU.
Samouczek: debugowanie zakleszczenia pokazuje, jak za pomocą narzędzia dotnet-dump zbadać wątki i blokady.
Samouczek: debugowanie głodu puli wątków pokazuje, jak używać narzędzi dotnet-counters i dotnet-stack w celu zbadania głodu ThreadPool.
Samouczek: debugowanie rozwiązania StackOverflow pokazuje, jak debugować element StackOverflowException w systemie Linux.
Debugowanie zrzutów systemu Linux wyjaśnia, jak zbierać i analizować zrzuty w systemie Linux.
Samouczek: mierzenie wydajności przy użyciu usługi EventCounters na platformie .NET pokazuje, jak używać interfejsu EventCounter API do mierzenia wydajności w aplikacji platformy .NET.