Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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:
- OpenTelemetry — wieloplatformowy, neutralny dla dostawcy standard do zbierania i eksportowania danych telemetrycznych
- Narzędzia interfejsu wiersza polecenia platformy .NET , takie jak dotnet-counters
- dotnet-monitor — agent do zbierania śladów i telemetrii
- Biblioteki lub kod aplikacji innych firm mogą odczytywać informacje z interfejsów System.Diagnostics.MetricsAPI , ILogger<TCategoryName>i System.Diagnostics.Activity .
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.