Specializovaná diagnostika

Pokud ladění nebo pozorovatelnost nestačí, podporuje .NET další diagnostické mechanismy.

Sledování pomocí zdroje událostí

Zdroj událostí umožňuje shromažďovat podrobné diagnostické informace o tom, co se děje uvnitř procesů .NET. Obsahuje informace o telemetrii pro běhové prostředí, GC, knihovny a kód aplikace.

Data zdroje událostí je možné shromažďovat v procesu pomocí System.Diagnostics.Tracing.EventListener rozhraní API nebo pomocí externích diagnostických nástrojů, jako Visual Studio, dotnet-monitor, dotnet-trace, PerfView a skripty Perfcollect. Používání externích nástrojů ke sběru zdrojových dat událostí ve stopách se běžně používá k analýze výkonu.

EventPipe

EventPipe je komponenta runtime, která se dá použít ke shromažďování trasovacích dat, podobně jako ETW nebo LTTng. Cílem eventPipe je umožnit vývojářům .NET snadné trasování aplikací .NET, aniž by se museli spoléhat na komponenty nativní pro platformu, jako je ETW nebo LTTng.

EventPipe je mechanismus, který stojí za mnoha diagnostickými nástroji. Lze ho použít pro využívání událostí vygenerovaných modulem runtime a také pro vlastní události napsané pomocí EventSource.

Výpisy

Dump je soubor, který obsahuje záznam procesu v době vytvoření výpisu. Výpisy paměti můžou 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. Tyto nástroje běžně používají ladicí programy .NET a nástroje pro trasování k rozlišení čísel řádků ve zdroji, názvů místních proměnných a dalších typů diagnostických informací.

Diagnostický port

Modul runtime .NET zveřejňuje koncový bod služby, který umožňuje jiným procesům odesílat diagnostické příkazy a přijímat odpovědi přes kanál IPC. Tento koncový bod se nazývá diagnostický port. Příkazy se dají odeslat na port diagnostiky do:

  • Zachyťte výpis paměti.
  • Spusťte trasování EventPipe.
  • Požádejte o příkazový řádek použitý ke spuštění aplikace.

DiagnosticSource a DiagnosticListener

DiagnosticSource je modul, který umožňuje instrumentaci kódu pro protokolování bohatých datových bloků v produkčním čase pro spotřebu uvnitř instrumentovaného procesu. Za běhu můžou spotřebitelé dynamicky zjišťovat zdroje dat a odebírat ty, které jsou zajímavé. System.Diagnostics.DiagnosticSource byla navržena tak, aby umožňovala nástrojům přímo v procesu přístup k rozsáhlým datům, například prostřednictvím knihoven instrumentace OpenTelemetry. DiagnosticSource data může být také exportována prostřednictvím EventPipe, což umožňuje shromažďování bohatých diagnostických dat specializovanými nástroji.

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

Ke shromažďování diagnostiky v kontejnerech je možné použít také stejné diagnostické nástroje, které se používají v nekotenerizovaných linuxových prostředích. K zajištění toho, aby nástroje fungovaly v kontejneru Dockeru, je potřeba provést jen několik změn použití.

Viz také