Dela via


Diagnostik i .NET

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

Intern AOT-distribution är en programmodell som har varit tillgänglig sedan .NET 7. Information om diagnostikstöd för .NET 8 för interna AOT-appar finns i Intern AOT-diagnostik.

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. När 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.

Profilerare

Profilerare gör att du kan analysera programmets prestanda. Du kan samla in data om minnesanvändning, CPU-användning och andra mått för att diagnostisera och förstå prestandaproblem.

Instrumentation för observerbarhet

.NET stöder branschstandardinstrumentationstekniker med hjälp av mått, loggar och distribuerade spårningar, som ofta kallas de tre grundpelarna för observerbarhet.

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 minnesintern 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 inbyggd instrumentation som kan aktiveras och API:er som gör att du kan lägga till anpassade instrumentation som är specialiserad för ditt program.

Loggfiler

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. Prestandaomkostnaderna varierar beroende på hur mycket data som loggas.

I de flesta fall, oavsett om du lägger till loggning i ett befintligt projekt eller skapar ett nytt projekt, är ILogger-infrastrukturen ett bra standardval. ILogger stöder snabb strukturerad loggning, flexibel konfiguration och en samling vanliga mottagare , inklusive konsolen, vilket är vad du ser när du kör en ASP.NET app. Dessutom ILogger kan gränssnittet även fungera som en fasad över många implementeringar av loggning från tredje part som erbjuder omfattande funktioner och utökningsbarhet.

Metrics

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. Undantag registreras ofta som mått och kan sammanfattas för att minska kardinaliteten för data. Mer information finns i Undantagssammanfattning.

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 dem 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.

Samla in instrumentation

Det finns flera sätt att utgående instrumentationsdata från programmet, inklusive:

Specialiserad diagnostik

Om felsökning eller observerbarhet inte räcker stöder .NET ytterligare diagnostikmekanismer som EventSource, Dumps och DiagnosticSource. Mer information finns i artikeln om specialiserad diagnostik .

Diagnostikverktyg

.NET stöder ett antal CLI-verktyg som kan användas för att diagnostisera dina program.

Självstudier om .NET Core-diagnostik

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ändningsprofilen.

Felsöka dödläge

Självstudie: Felsökningslås 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ökning av 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.

Skriva ett eget diagnostikverktyg

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