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.