Vilka diagnostikverktyg är tillgängliga i .NET Core?

Programvara fungerar inte alltid som förväntat, men .NET Core har verktyg och API:er som hjälper dig att diagnostisera dessa problem snabbt och effektivt.

Den här artikeln hjälper dig att hitta de olika verktyg du behöver.

Felsökare

Med felsökningsprogram kan du interagera med ditt program. Om du pausar, inkrementellt kör, undersöker och återupptar får du insikt i kodens beteende. Ett felsökningsprogram är ett bra val för att diagnostisera funktionella problem som enkelt kan återskapas.

Enhetstestning

Enhetstestning är en viktig komponent i kontinuerlig integrering och distribution av programvara av hög kvalitet. Enhetstester är utformade för att ge dig en tidig varning när du bryter något.

Instrumentation för observerbarhet

.NET stöder branschstandardinstrumentationstekniker med hjälp av mått, loggar och distribuerade spårningar. Instrumentation är kod som läggs till i ett programvaruprojekt för att registrera vad det gör. Den här informationen kan sedan samlas in i filer, databaser eller minnesinternt och analyseras för att förstå hur ett program fungerar. Detta används ofta i produktionsmiljöer för att övervaka problem och diagnostisera dem. .NET-körningen har inbyggda instrumentation som kan aktiveras och API:er som gör att du kan lägga till anpassade instrument som är specialiserade för ditt program.

Mått

Mått är numeriska mått som registreras över tid för att övervaka programmets prestanda och hälsa. Mått används ofta för att generera aviseringar när potentiella problem identifieras. Mått har mycket låga prestandakostnader och många tjänster konfigurerar dem som always-on-telemetri.

Loggar

Loggning är en teknik där kod instrumenteras för att skapa en logg, en post med intressanta händelser som inträffade när programmet kördes. Ofta konfigureras en baslinjeuppsättning med logghändelser som standard och mer omfattande loggning kan aktiveras på begäran för att diagnostisera specifika problem. Prestandaomkostnader varierar beroende på hur mycket data som loggas.

Distribuerade spårningar

Distribuerad spårning är en specialiserad form av loggning som hjälper dig att lokalisera fel och prestandaproblem i program som distribueras över flera datorer eller processer. Den här tekniken spårar begäranden via ett program som korrelerar arbete som utförs av olika programkomponenter och separerar det från annat arbete som programmet kan utföra för samtidiga begäranden. Det går att spåra varje begäran och sampling kan användas för att begränsa prestandakostnaderna.

Dumpar

En dump är en fil som innehåller en ögonblicksbild av processen när den skapas. Dessa kan vara användbara för att undersöka tillståndet för ditt program i felsökningssyfte.

Symboler

Symboler är en mappning mellan källkoden och binärfilen som skapas av kompilatorn. Dessa används ofta av .NET-felsökare för att matcha källradsnummer, lokala variabelnamn och andra typer av diagnostikinformation.

Samla in diagnostik i containrar

Samma diagnostikverktyg som används i icke-containerbaserade Linux-miljöer kan också användas för att samla in diagnostik i containrar. Det krävs bara några användningsändringar för att se till att verktygen fungerar i en Docker-container.

Globala verktyg för .NET Core-diagnostik

dotnet-counters

dotnet-counters är ett prestandaövervakningsverktyg för hälsoövervakning och prestandaundersökning på första nivån. Den observerar prestandaräknarvärden som publicerats via API:et EventCounter . Du kan till exempel snabbt övervaka saker som CPU-användning eller antalet undantag som genereras i .NET Core-programmet.

dotnet-dump

Verktyget dotnet-dump är ett sätt att samla in och analysera Windows- och Linux-kärndumpar utan ett internt felsökningsprogram.

dotnet-gcdump

Verktyget dotnet-gcdump är ett sätt att samla in GC-dumpar (skräpinsamlaren) med live-.NET-processer.

dotnet-trace

.NET Core innehåller det som kallas för diagnostikdata EventPipe som exponeras. Med dotnet-trace-verktyget kan du använda intressanta profileringsdata från din app som kan hjälpa dig i scenarier där du behöver rotorsaken till att appar körs långsamt.

dotnet-stack

Med dotnet-stack-verktyget kan du snabbt skriva ut de hanterade stackarna för alla trådar i en .NET-process som körs.

dotnet-symbol

dotnet-symbolen laddar ned filer (symboler, DAC/DBI, värdfiler osv.) som behövs för att öppna en kärndump eller minidump. Använd det här verktyget om du behöver symboler och moduler för att felsöka en dumpfil som samlats in på en annan dator.

dotnet-sos

dotnet-sos installerar SOS-felsökningstillägget på Linux och macOS (och på Windows om du använder Windbg/cdb).

PerfCollect

PerfCollect är ett bash-skript som du kan använda för att samla in spårningar med perf och LTTng för en mer djupgående prestandaanalys av .NET-appar som körs på Linux-distributioner.

Självstudier om .NET Core-diagnostik

Skriva ett eget diagnostikverktyg

Med diagnostikklientbiblioteket kan du skriva ett eget anpassat diagnostikverktyg som passar bäst för ditt diagnostikscenario. Leta upp information i API-referensen för Microsoft.Diagnostics.NETCore.Client.

Felsöka en minnesläcka

Självstudie: Felsöka en minnesläcka går igenom hur du hittar en minnesläcka. Verktyget dotnet-counters används för att bekräfta läckan och verktyget dotnet-dump används för att diagnostisera läckan.

Felsöka hög CPU-användning

Självstudie: Felsöka hög CPU-användning vägleder dig genom att undersöka hög CPU-användning. Verktyget dotnet-counters används för att bekräfta den höga CPU-användningen. Den vägleder dig sedan genom att använda Trace for performance analysis utility (dotnet-trace) eller Linux perf för att samla in och visa cpu-användningsprofil.

Felsöka dödläge

Självstudie: Felsökning av dödläge visar hur du använder verktyget dotnet-dump för att undersöka trådar och lås.

Felsöka ThreadPool-svält

Självstudie: Felsökning av threadPool-svält visar hur du använder dotnet-counters och dotnet-stack-verktyg för att undersöka ThreadPool-svält.

Felsöka ett StackOverflow

Självstudie: Felsöka en StackOverflow visar hur du felsöker en StackOverflowException i Linux.

Felsöka Linux-dumpar

Felsöka Linux-dumpar förklarar hur du samlar in och analyserar dumpar i Linux.

Mäta prestanda med EventCounters

Självstudie: Mäta prestanda med EventCounters i .NET visar hur du använder API:et EventCounter för att mäta prestanda i .NET-appen.