Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Software verhält sich nicht immer wie erwartet, aber .NET verfügt über Tools und APIs, die Ihnen helfen, diese Probleme schnell und effektiv zu diagnostizieren.
Die systemeigene AOT-Bereitstellung ist ein Anwendungsmodell, das seit .NET 7 verfügbar ist. Informationen zur .NET 8-Diagnoseunterstützung für native AOT-Apps finden Sie unter native AOT-Diagnose.
In diesem Artikel finden Sie die verschiedenen Tools, die Sie benötigen.
Debugger
Debugger ermöglichen es Ihnen, mit Ihrem Programm zu interagieren. Das Anhalten, inkrementelles Ausführen, Untersuchen und Fortsetzen gibt Ihnen Einblicke in das Verhalten Ihres Codes. Ein Debugger ist eine gute Wahl für die Diagnose funktionaler Probleme, die leicht reproduziert werden können.
Profiler
Profilierer ermöglichen es Ihnen, die Leistung Ihres Programms zu analysieren. Sie können Daten zur Speicherauslastung, cpu-Auslastung und anderen Metriken sammeln, um Leistungsprobleme zu diagnostizieren und zu verstehen.
Instrumentierung zur Beobachtbarkeit
.NET unterstützt Branchenstandardinstrumentationstechniken mithilfe von Metriken, Protokollen und verteilten Ablaufverfolgungen, die allgemein als die drei Säulen der Observierbarkeit bezeichnet werden.
Instrumentation ist Code, der einem Softwareprojekt hinzugefügt wird, um aufzuzeichnen, was es tut. Diese Informationen können dann in Dateien, Datenbanken oder im Arbeitsspeicher gesammelt und analysiert werden, um zu verstehen, wie ein Softwareprogramm funktioniert. Dies wird häufig in Produktionsumgebungen verwendet, um Probleme zu überwachen und zu diagnostizieren. Die .NET-Runtime verfügt über integrierte Instrumentierung, die optional aktiviert werden kann, und APIs, mit denen Sie spezielle benutzerdefinierte Instrumentierung für Ihre Anwendung hinzufügen können.
Logs
Die Protokollierung ist eine Technik, bei der Code instrumentiert wird, um ein Protokoll zu erzeugen, ein Datensatz interessanter Ereignisse, die während der Ausführung des Programms aufgetreten sind. Häufig wird ein Basissatz von Protokollereignissen standardmäßig aktiviert, und eine umfangreichere Protokollierung kann bei Bedarf aktiviert werden, um bestimmte Probleme zu diagnostizieren. Der Leistungsaufwand ist abhängig davon, wie viele Daten protokolliert werden.
In den meisten Fällen ist die ILogger-Infrastruktur eine gute Standardeinstellung, unabhängig davon, ob Sie ein vorhandenes Projekt hinzufügen oder ein neues Projekt erstellen.
ILogger unterstützt schnelle strukturierte Protokollierung, flexible Konfiguration und eine Sammlung allgemeiner Senken , einschließlich der Konsole, die beim Ausführen einer ASP.NET-App angezeigt wird. Darüber hinaus kann die ILogger Schnittstelle auch als Fassade für viele Protokollierungsimplementierungen von Drittanbietern dienen, die umfangreiche Funktionalität und Erweiterbarkeit bieten.
Metriken
Metriken sind numerische Messungen, die im Laufe der Zeit aufgezeichnet werden, um die Leistung und integrität der Anwendung zu überwachen. Metriken werden häufig verwendet, um Warnungen zu generieren, wenn potenzielle Probleme erkannt werden. Metriken weisen einen sehr geringen Leistungsaufwand auf, und viele Dienste konfigurieren sie als always-on-Telemetrie. Ausnahmen werden häufig als Metriken aufgezeichnet und können zusammengefasst werden, um die Kardinalität der Daten zu verringern. Weitere Informationen finden Sie unter "Exception summaryzation".
Verteilte Ablaufverfolgungen
Die verteilte Ablaufverfolgung ist eine spezielle Form der Protokollierung, mit der Sie Fehler und Leistungsprobleme innerhalb von Anwendungen lokalisieren können, die auf mehreren Computern oder Prozessen verteilt sind. Diese Technik verfolgt Anforderungen durch eine Anwendung, die die Zusammenarbeit von verschiedenen Anwendungskomponenten korreliert, und trennt sie von anderen Arbeiten, die die Anwendung möglicherweise für gleichzeitige Anforderungen ausführt. Es ist möglich, jede Anforderung und jedes Sampling zu verfolgen, kann optional verwendet werden, um den Leistungsaufwand zu binden.
Instrumentierung sammeln
Es gibt mehrere Möglichkeiten, wie die Instrumentierungsdaten aus der Anwendung ausgeleitet werden können, darunter:
- OpenTelemetry – ein plattformübergreifender, anbieterneutraler Standard zum Sammeln und Exportieren von Telemetrie
- .NET CLI-Tools wie dotnet-counters
- dotnet-monitor - ein Agent zum Sammeln von Ablaufverfolgungen und Telemetrie
- Drittanbieterbibliotheken oder App-Code können die Informationen aus den System.Diagnostics.MetricsAPIs ILogger<TCategoryName>lesen System.Diagnostics.Activity .
Spezialisierte Diagnose
Wenn das Debuggen oder die Observierbarkeit nicht ausreicht, unterstützt .NET zusätzliche Diagnosemechanismen wie EventSource, Dumps, DiagnosticSource. Weitere Informationen finden Sie im speziellen Diagnoseartikel .
Diagnosetools
.NET unterstützt eine Reihe von CLI-Tools , die zum Diagnostizieren Ihrer Anwendungen verwendet werden können.
Lernprogramme zur .NET Core-Diagnose
Fehlerbeseitigung bei einem Speicherleck
Lernprogramm: Debuggen eines Speicherverlusts führt Sie durch die Suche nach einem Speicherverlust. Das Dotnet-Counter-Tool wird verwendet, um das Leck zu bestätigen, und das Dotnet-Dump-Tool wird verwendet, um das Leck zu diagnostizieren.
Debuggen einer hohen CPU-Auslastung
Lernprogramm: Debuggen der hohen CPU-Auslastung führt Sie durch die Untersuchung der hohen CPU-Auslastung. Es verwendet das Dotnet-Counter-Tool , um die hohe CPU-Auslastung zu bestätigen. Anschließend werden Sie durch die Verwendung von Trace für das Leistungsanalyseprogramm (dotnet-trace) oder Linux perf zum Sammeln und Anzeigen des CPU-Nutzungsprofils durchläuft.
Debuggen von Deadlocks
Lernprogramm: Debuggen von Deadlock zeigt Ihnen, wie Sie das Dotnet-Dump-Tool verwenden, um Threads und Sperren zu untersuchen.
ThreadPool-Starvation debuggen
Lernprogramm: Debuggen von ThreadPool-Starvation zeigt Ihnen, wie Sie die Dotnet-Zähler und dotnet-stack-Tools verwenden, um ThreadPool-Starvation zu untersuchen.
Debuggen eines StackOverflows
Lernprogramm: Debuggen eines StackOverflows veranschaulicht, wie sie unter StackOverflowException Linux debuggen.
Debuggen von Linux-Dumps
Das Debuggen von Linux-Dumps erläutert, wie Dumps unter Linux gesammelt und analysiert werden.
Messen der Leistung mithilfe von EventCounters
Lernprogramm: Messen der Leistung mithilfe von EventCounters in .NET zeigt, wie Sie die API zum Messen der EventCounter Leistung in Ihrer .NET-App verwenden.
Schreiben Eines eigenen Diagnosetools
Mit der Diagnoseclientbibliothek können Sie Ihr eigenes benutzerdefiniertes Diagnosetool schreiben, das am besten für Ihr Diagnoseszenario geeignet ist. Weitere Informationen finden Sie in der Referenz zur Microsoft.Diagnostics.NETCore.Client-API.