Welke diagnostische hulpprogramma's zijn beschikbaar in .NET Core?

Software gedraagt zich niet altijd zoals u zou verwachten, maar .NET Core heeft hulpprogramma's en API's waarmee u deze problemen snel en effectief kunt diagnosticeren.

In dit artikel vindt u de verschillende hulpprogramma's die u nodig hebt.

Debuggers

Met foutopsporingsprogramma's kunt u communiceren met uw programma. Als u de code onderbroken, incrementeel uitvoert, onderzoekt en hervat, krijgt u inzicht in het gedrag van uw code. Een foutopsporingsprogramma is een goede keuze voor het diagnosticeren van functionele problemen die eenvoudig kunnen worden gereproduceerd.

Het testen van modules

Eenheidstests zijn een belangrijk onderdeel van continue integratie en implementatie van hoogwaardige software. Eenheidstests zijn ontworpen om u een vroege waarschuwing te geven wanneer u iets onderbreekt.

Instrumentatie voor waarneembaarheid

.NET ondersteunt industriestandaard instrumentatietechnieken met behulp van metrische gegevens, logboeken en gedistribueerde traceringen. Instrumentatie is code die wordt toegevoegd aan een softwareproject om vast te leggen wat het doet. Deze informatie kan vervolgens worden verzameld in bestanden, databases of in het geheugen en geanalyseerd om te begrijpen hoe een softwareprogramma werkt. Dit wordt vaak gebruikt in productieomgevingen om te controleren op problemen en deze te diagnosticeren. De .NET-runtime heeft ingebouwde instrumentatie die optioneel kan worden ingeschakeld en API's waarmee u aangepaste instrumentatie kunt toevoegen die speciaal is bedoeld voor uw toepassing.

Metrische gegevens

Metrische gegevens zijn numerieke metingen die in de loop van de tijd zijn vastgelegd om de prestaties en status van toepassingen te bewaken. Metrische gegevens worden vaak gebruikt om waarschuwingen te genereren wanneer mogelijke problemen worden gedetecteerd. Metrische gegevens hebben een zeer lage overhead voor prestaties en veel services configureren ze als always-on-telemetrie.

Logboeken

Logboekregistratie is een techniek waarbij code wordt geïnstrueerd om een logboek te produceren, een record van interessante gebeurtenissen die plaatsvonden tijdens het uitvoeren van het programma. Vaak wordt standaard een basislijnset met logboekgebeurtenissen geconfigureerd en kan uitgebreidere logboekregistratie op aanvraag worden ingeschakeld om bepaalde problemen vast te stellen. Prestatieoverhead is variabel, afhankelijk van hoeveel gegevens worden geregistreerd.

Gedistribueerde traceringen

Gedistribueerde tracering is een gespecialiseerde vorm van logboekregistratie waarmee u fouten en prestatieproblemen kunt lokaliseren binnen toepassingen die zijn gedistribueerd over meerdere machines of processen. Met deze techniek worden aanvragen bijgehouden via een toepassing die samen werk correleert dat door verschillende toepassingsonderdelen wordt uitgevoerd en wordt gescheiden van ander werk dat de toepassing kan uitvoeren voor gelijktijdige aanvragen. Het is mogelijk om elke aanvraag te traceren en steekproeven optioneel te gebruiken om de overhead van de prestaties te binden.

Stortplaatsen

Een dump is een bestand dat een momentopname van het proces bevat op het moment van maken. Dit kan handig zijn voor het onderzoeken van de status van uw toepassing voor foutopsporingsdoeleinden.

Symbolen

Symbolen zijn een toewijzing tussen de broncode en het binaire bestand dat door de compiler wordt geproduceerd. Deze worden vaak gebruikt door .NET-foutopsporingsprogramma's om bronregelnummers, lokale variabelenamen en andere typen diagnostische gegevens op te lossen.

Diagnostische gegevens verzamelen in containers

Dezelfde diagnostische hulpprogramma's die worden gebruikt in niet-containergebaseerde Linux-omgevingen, kunnen ook worden gebruikt voor het verzamelen van diagnostische gegevens in containers. Er zijn slechts enkele gebruikswijzigingen nodig om ervoor te zorgen dat de hulpprogramma's in een Docker-container werken.

Globale hulpprogramma's voor .NET Core-diagnose

dotnet-counters

dotnet-counters is een hulpprogramma voor prestatiebewaking voor statusbewaking en prestatieonderzoek op het eerste niveau. De prestatiemeteritems worden gepubliceerd via de EventCounter API. U kunt bijvoorbeeld snel zaken bewaken zoals het CPU-gebruik of de frequentie van uitzonderingen die worden gegenereerd in uw .NET Core-toepassing.

dotnet-dump

Het dotnet-dump-hulpprogramma is een manier om Windows en Linux-kerndumps te verzamelen en te analyseren zonder een systeemeigen foutopsporingsprogramma.

dotnet-gcdump

Het dotnet-gcdump-hulpprogramma is een manier om GC-dumps (Garbage Collector) van live .NET-processen te verzamelen.

dotnet-trace

.NET Core bevat wat wordt EventPipe genoemd waarmee diagnostische gegevens worden weergegeven. Met het hulpprogramma dotnet-trace kunt u interessante profileringsgegevens van uw app gebruiken die u kunnen helpen in scenario's waarin u de hoofdoorzaak moet veroorzaken dat apps traag worden uitgevoerd.

dotnet-stack

Met het hulpprogramma dotnet-stack kunt u snel de beheerde stacks afdrukken voor alle threads in een actief .NET-proces.

dotnet-symbol

dotnet-symbol downloadt bestanden (symbolen, DAC/DBI, hostbestanden, enzovoort) die nodig zijn om een kerndump of minidump te openen. Gebruik dit hulpprogramma als u symbolen en modules nodig hebt om fouten op te sporen in een dumpbestand dat is vastgelegd op een andere computer.

dotnet-sos

dotnet-sos installeert de SOS-foutopsporingsextensie in Linux en macOS (en op Windows als u Windbg/cdb gebruikt).

PerfCollect

PerfCollect is een bash-script waarmee u traceringen kunt verzamelen en perfLTTng voor een uitgebreidere prestatieanalyse van .NET-apps die worden uitgevoerd op Linux-distributies.

Zelfstudies voor diagnostische gegevens van .NET Core

Uw eigen diagnostische hulpprogramma schrijven

Met de diagnostische clientbibliotheek kunt u uw eigen aangepaste diagnostisch hulpprogramma schrijven dat het meest geschikt is voor uw diagnostische scenario. Zoek informatie op in de naslaginformatie over de API van Microsoft.Diagnostics.NETCore.Client.

Fouten opsporen in een geheugenlek

Zelfstudie: Fouten opsporen in een geheugenlek helpt bij het vinden van een geheugenlek. Het hulpprogramma dotnet-counters wordt gebruikt om het lek te bevestigen en het dotnet-dump hulpprogramma wordt gebruikt om het lek te diagnosticeren.

Fouten opsporen in hoog CPU-gebruik

Zelfstudie: Fouten opsporen in hoog CPU-gebruik helpt u bij het onderzoeken van hoog CPU-gebruik. Het hulpprogramma dotnet-counters wordt gebruikt om het hoge CPU-gebruik te bevestigen. Vervolgens wordt u stapsgewijs begeleid bij het gebruik van Trace voor het hulpprogramma voor prestatieanalyse (dotnet-trace) of Linux perf om het CPU-gebruiksprofiel te verzamelen en weer te geven.

Impasse opsporen

Zelfstudie: Fouten opsporen in impasses laat zien hoe u het hulpprogramma dotnet-dump gebruikt om threads en vergrendelingen te onderzoeken.

Fouten opsporen in ThreadPool Starvation

Zelfstudie: Debug threadPool starvation laat zien hoe u de dotnet-counters en dotnet-stack-hulpprogramma's gebruikt om ThreadPool-starvation te onderzoeken.

Fouten opsporen in een StackOverflow

Zelfstudie: Fouten opsporen in een StackOverflow laat zien hoe u fouten op een linux-computer kunt opsporen StackOverflowException .

Fouten opsporen in Linux-dumps

Fouten opsporen in Linux-dumps legt uit hoe u dumps op Linux verzamelt en analyseert.

Prestaties meten met EventCounters

Zelfstudie: Prestaties meten met EventCounters in .NET laat zien hoe u de API gebruikt om de EventCounter prestaties in uw .NET-app te meten.