Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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:
- OpenTelemetry – en plattformsoberoende, leverantörsneutral standard för insamling och export av telemetri
- .NET CLI-verktyg som dotnet-counters
- dotnet-monitor – en agent för att samla in spårningar och telemetri
- Bibliotek eller appkod från tredje part kan läsa informationen från API:erna System.Diagnostics.Metrics, ILogger<TCategoryName>och System.Diagnostics.Activity .
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.