Udostępnij przez


Diagnostyka na platformie .NET

Oprogramowanie nie zawsze zachowuje się zgodnie z oczekiwaniami, ale platforma .NET ma narzędzia i interfejsy API, które pomogą w szybkim i efektywnym diagnozowaniu tych problemów.

Wdrożenie natywnej usługi AOT to model aplikacji, który jest dostępny od platformy .NET 7. Aby uzyskać informacje o obsłudze diagnostycznej platformy .NET 8 dla natywnych aplikacji AOT, zobacz Natywna diagnostyka AOT.

Ten artykuł ułatwia znalezienie różnych potrzebnych narzędzi.

Debugery

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ć.

Profilowania

Profileery umożliwiają analizowanie wydajności programu. Możesz zbierać dane dotyczące użycia pamięci, użycia procesora CPU i innych metryk, aby zdiagnozować i zrozumieć problemy z wydajnością.

Instrumentacja w celu obserwowania

Platforma .NET obsługuje standardowe techniki instrumentacji branżowych przy użyciu metryk, dzienników i rozproszonych śladów, powszechnie znanych jako trzy filary obserwacji.

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 ich diagnozowania. Ś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.

Dzienniki

Rejestrowanie to technika, w której kod jest instrumentowany w celu utworzenia dziennika, rekord interesujących zdarzeń, które wystąpiły podczas uruchamiania programu. Często zestaw punktów odniesienia zdarzeń dziennika jest konfigurowany domyślnie i można włączyć bardziej rozbudowane rejestrowanie na żądanie w celu zdiagnozowania określonych problemów. Obciążenie związane z wydajnością jest zmienne w zależności od ilości rejestrowanych danych.

W większości przypadków dodanie rejestrowania do istniejącego projektu lub utworzenie nowego projektu jest dobrym wyborem domyślnym. ILogger Obsługuje szybkie rejestrowanie strukturalne, elastyczną konfigurację i kolekcję typowych ujściów , w tym konsoli, co jest widoczne podczas uruchamiania aplikacji ASP.NET. ILogger Ponadto interfejs może również służyć jako fasada w wielu implementacjach rejestrowania innych firm, które oferują zaawansowane funkcje i rozszerzalność.

Metrics

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 niskie obciążenie związane z wydajnością i wiele usług konfiguruje je jak zawsze włączone dane telemetryczne. Wyjątki są często rejestrowane jako metryki i można je podsumować, aby zmniejszyć kardynalność danych. Aby uzyskać więcej informacji, zobacz Podsumowanie wyjątków.

Rozproszone ślady

Ś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 innych zadań, które aplikacja może wykonywać dla żądań współbieżnych. Istnieje możliwość śledzenia każdego żądania i próbkowania można opcjonalnie stosować w celu ograniczenia obciążenia związanego z wydajnością.

Zbieranie instrumentacji

Istnieje wiele sposobów, na które dane instrumentacji mogą być wychodzące z aplikacji, w tym:

Wyspecjalizowana diagnostyka

Jeśli debugowanie lub obserwowanie nie jest wystarczające, platforma .NET obsługuje dodatkowe mechanizmy diagnostyczne, takie jak EventSource, Zrzuty, Źródło diagnostyczne. Aby uzyskać więcej informacji, zobacz wyspecjalizowany artykuł diagnostyczny .

Narzędzia diagnostyczne

Platforma .NET obsługuje wiele narzędzi interfejsu wiersza polecenia , które mogą służyć do diagnozowania aplikacji.

Samouczki diagnostyczne platformy .NET Core

Debugowanie przecieku pamięci

Samouczek: debugowanie przecieku pamięci przeprowadzi cię przez proces znajdowania przecieku pamięci. Narzędzie dotnet-counters służy do potwierdzania wycieku, a narzędzie dotnet-dump służy do diagnozowania wycieku.

Debugowanie wysokiego użycia procesora

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 do analizy wydajności (dotnet-trace) lub systemu Linux perf w celu zbierania i wyświetlania profilu użycia procesora CPU.

Debugowanie zakleszczenia

Samouczek: debugowanie zakleszczenia pokazuje, jak używać narzędzia dotnet-dump do badania wątków i blokad.

Debugowanie zagęszczania puli wątków

Samouczek: debugowanie starvation threadPool pokazuje, jak używać liczników dotnet-counters i narzędzi dotnet-stack do badania głodu ThreadPool.

Debugowanie usługi StackOverflow

Samouczek: debugowanie rozwiązania StackOverflow pokazuje, jak debugować element StackOverflowException w systemie Linux.

Debugowanie zrzutów systemu Linux

Debugowanie zrzutów systemu Linux wyjaśnia, jak zbierać i analizować zrzuty w systemie Linux.

Mierzenie wydajności przy użyciu usługi EventCounters

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 .NET.

Pisanie własnego narzędzia diagnostycznego

Biblioteka klienta diagnostyki umożliwia napisanie własnego niestandardowego narzędzia diagnostycznego najlepiej dopasowanego do scenariusza diagnostycznego. Aby uzyskać więcej informacji, zobacz dokumentacja interfejsu API Microsoft.Diagnostics.NETCore.Client.