Jaké diagnostické nástroje jsou k dispozici v .NET Core?

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

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

Debuggery

Ladicí programy umožňují pracovat s programem. Pozastavení, přírůstkové provádě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.

Testování jednotek

Testování částí je klíčovou součástí kontinuální integrace a nasazování vysoce kvalitního softwaru. Testy jednotek jsou navržené tak, aby vám poskytly včasné upozornění, když něco přerušíte.

Instrumentace pro pozorovatelnost

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

Metriky

Metriky jsou číselné měření 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.

Protokoly

Protokolování je technika, kdy je kód instrumentován k vytvoření protokolu, záznam zajímavých událostí, ke kterým došlo při spuštění programu. Často se ve výchozím nastavení konfiguruje 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.

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říč několika 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 aplikace může provádět pro souběžné požadavky. Je možné sledovat 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.

Výpisy stavu systému

Výpis paměti je soubor, který obsahuje snímek procesu v době vytvoření. To může být užitečné při zkoumání stavu aplikace pro účely ladění.

Symboly

Symboly jsou mapování mezi zdrojovým kódem a binárním souborem vytvořeným kompilátorem. Běžně se používají ladicí programy .NET k překladu čísel zdrojových řádků, názvů místních proměnných a dalších typů diagnostických informací.

Shromažďování diagnostických dat v kontejnerech

Stejné diagnostické nástroje, které se používají v nekontenerizovaných linuxových prostředích, lze použít také ke shromažďování diagnostiky v kontejnerech. K zajištění toho, aby nástroje fungovaly v kontejneru Dockeru, je potřeba jen pár změn použití.

Globální nástroje diagnostiky .NET Core

dotnet-counters

dotnet-counters je nástroj pro monitorování výkonu pro monitorování stavu na první úrovni a prošetřování výkonu. Sleduje hodnoty čítače výkonu EventCounter publikované prostřednictvím rozhraní API. Můžete například rychle monitorovat například využití procesoru nebo četnost výjimek, které se v aplikaci .NET Core vyvolává.

dotnet-dump

Nástroj dotnet-dump je způsob, jak shromažďovat a analyzovat Windows a linuxové výpisy paměti jádra bez nativního ladicího programu.

dotnet-gcdump

Nástroj dotnet-gcdump je způsob, jak shromáždit výpisy paměti uvolňování paměti živých procesů .NET.

dotnet-trace

.NET Core zahrnuje to, co se označuje jako EventPipe to, přes která jsou vystavená diagnostická data. Nástroj dotnet-trace umožňuje využívat zajímavá data profilace z vaší aplikace, která vám můžou pomoct ve scénářích, kdy potřebujete způsobit zpomalení aplikací.

dotnet-stack

Nástroj dotnet-stack umožňuje rychle vytisknout spravované zásobníky pro všechna vlákna v běžícím procesu .NET.

dotnet-symbol

dotnet-symbol stahuje soubory (symboly, DAC/DBI, hostitelské soubory atd.) potřebné k otevření základního výpisu paměti nebo minidumpu. Tento nástroj použijte, pokud potřebujete symboly a moduly k ladění souboru výpisu paměti zachyceného na jiném počítači.

dotnet-sos

dotnet-sos nainstaluje rozšíření ladění SOS v Linuxu a macOS (a na Windows, pokud používáte Windbg/cdb).

PerfCollect

PerfCollect je skript bash, který můžete použít ke shromažďování trasování a perfLTTng k podrobnější analýze výkonu aplikací .NET běžících v distribucích Linuxu.

Kurzy diagnostiky .NET Core

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

Diagnostická klientská knihovna umožňuje napsat vlastní diagnostický nástroj, který nejlépe vyhovuje vašemu diagnostickému scénáři. Vyhledejte informace v referenčních informacích k rozhraní API microsoft.Diagnostics.NETCore.Client.

Ladění nevrácené paměti

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

Ladění vysokého využití 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 pomocí 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-čítače a nástroje dotnet-stack k prozkoumání hladové technologie ThreadPool.

Ladění StackOverflow

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

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

Ladění výpisů systému Linux vysvětluje, jak shromažďovat a analyzovat výpisy paměti 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.