Sdílet prostřednictvím


Diagnostika v .NET

Software se nechová vždy tak, jak byste očekávali, ale .NET má nástroje a rozhraní API, které vám pomůžou tyto problémy rychle a efektivně diagnostikovat.

Nativní nasazení AOT je aplikační model, který je k dispozici od verze .NET 7. Informace o podpoře diagnostiky .NET 8 pro nativní aplikace AOT najdete v tématu Nativní diagnostika AOT.

Tento článek vám pomůže najít různé nástroje, které potřebujete.

Ladící programy

Ladicí programy umožňují interakci s programem. Pozastavení, přírůstkové spouštění, zkoumání a obnovení poskytuje přehled o chování kódu. Ladicí program je dobrou volbou pro diagnostiku funkčních problémů, které lze snadno reprodukovat.

Profilátory

Profilátory umožňují analyzovat výkon programu. Můžete shromažďovat data o využití paměti, využití procesoru a dalších metrikách za účelem diagnostiky a pochopení problémů s výkonem.

Instrumentace pro pozorovatelnost

.NET podporuje techniky instrumentace oborových standardů s využitím metrik, protokolů a distribuovaných trasování, které se běžně označují jako tři pilíře pozorovatelnosti.

Instrumentace je kód, který se přidá do softwarového projektu, který zaznamená, co dělá. Tyto informace je pak možné shromažďovat v souborech, databázích nebo v paměti a analyzovat je, abyste pochopili, jak softwarový program funguje. To se často používá v produkčních prostředích k monitorování problémů a jejich diagnostice. Modul runtime .NET má integrovanou instrumentaci, která může být volitelně povolená a rozhraní API, která umožňují přidat vlastní instrumentaci specializovanou pro vaši aplikaci.

Záznamy

Protokolování je technika, kdy se kód instrumentuje k vytvoření protokolu, záznam zajímavých událostí, ke kterým došlo při spuštění programu. Často je ve výchozím nastavení nakonfigurovaná základní sada událostí protokolu a pro diagnostiku konkrétních problémů je možné povolit rozsáhlejší protokolování na vyžádání. Režie na výkon je proměnná v závislosti na tom, kolik dat se protokoluje.

Ve většiněpřípadůch ILogger podporuje rychlé strukturované protokolování, flexibilní konfiguraci a kolekci běžných jímek, včetně konzoly , což se zobrazí při spuštění aplikace ASP.NET. ILogger Rozhraní také může sloužit jako fasáda nad mnoha implementacemi protokolování třetích stran, které nabízejí bohaté funkce a rozšiřitelnost.

Metrics

Metriky jsou číselné hodnoty zaznamenané v průběhu času za účelem monitorování výkonu a stavu aplikace. Metriky se často používají k generování výstrah při zjištění potenciálních problémů. Metriky mají velmi nízkou režii na výkon a mnoho služeb je konfiguruje jako vždy zapnutou telemetrii. Výjimky se často zaznamenávají jako metriky a dají se shrnout, aby se snížila kardinalita dat. Další informace najdete v tématu Souhrn výjimek.

Distribuované trasování

Distribuované trasování je specializovaná forma protokolování, která pomáhá lokalizovat chyby a problémy s výkonem v aplikacích distribuovaných napříč více počítači nebo procesy. Tato technika sleduje požadavky prostřednictvím korelace aplikace, kterou společně provádějí různé komponenty aplikace a oddělují je od jiné práce, kterou může aplikace provádět pro souběžné požadavky. Je možné trasovat všechny požadavky a vzorkování je možné volitelně použít k vázání režijních nákladů na výkon.

Shromažďování instrumentace

Data instrumentace se dají z aplikace vycházet několika způsoby, mezi které patří:

Specializovaná diagnostika

Pokud ladění nebo pozorovatelnost nestačí, podporuje .NET další diagnostické mechanismy, jako jsou EventSource, Dumps, DiagnosticSource. Další informace najdete ve specializovaném článku o diagnostice .

Diagnostické nástroje

.NET podporuje řadu nástrojů rozhraní příkazového řádku , které je možné použít k diagnostice vašich aplikací.

Kurzy diagnostiky .NET Core

Odladit únik paměti

Kurz: Ladění nevracení paměti vás provede vyhledáním nevrácené paměti. Nástroj dotnet-counters slouží k potvrzení úniku a nástroj dotnet-dump se používá k diagnostice úniku.

Odstraňování problémů s vysokým využitím procesoru

Kurz: Ladění vysokého využití procesoru vás provede zkoumáním vysokého využití procesoru. K potvrzení vysokého využití procesoru používá nástroj dotnet-counters . Pak vás provede používáním nástroje Trace pro analýzu výkonu (dotnet-trace) nebo Linuxu perf ke shromažďování a zobrazení profilu využití procesoru.

Ladění vzájemného zablokování

Kurz: Ladění zablokování ukazuje, jak pomocí nástroje dotnet-dump prozkoumat vlákna a zámky.

Ladění hladovění fondu vláken

Kurz: Ladění hladového fondu vláken ukazuje, jak použít dotnet-counters a dotnet-stack nástroje pro zkoumání hladovění ThreadPool.

Ladění StackOverflow

Kurz: Ladění StackOverflow ukazuje, jak ladit v Linuxu StackOverflowException .

Ladění výpisů systému Linux

Ladění výpisů systému Linux vysvětluje, jak shromažďovat a analyzovat výpisy v Linuxu.

Měření výkonu pomocí EventCounters

Kurz: Měření výkonu pomocí EventCounters v .NET ukazuje, jak pomocí EventCounter rozhraní API měřit výkon v aplikaci .NET.

Vytvoření vlastního diagnostického nástroje

Klientská knihovna diagnostiky umožňuje napsat vlastní diagnostický nástroj, který je nejvhodnější pro váš scénář diagnostiky. Další informace najdete v referenčních informacích k rozhraní MICROSOFT.Diagnostics.NETCore.Client API.