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 perf
LTTng
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.