Freigeben über


Spezialisierte Diagnose

Wenn das Debugging oder die Beobachtbarkeit nicht ausreichend ist, unterstützt .NET zusätzliche Diagnosemechanismen.

Ablaufverfolgung mit Ereignisquelle

Ereignisquelle bietet die Möglichkeit, detaillierte Diagnoseinformationen zu den Vorgängen in .NET-Prozessen zu sammeln. Sie enthält Telemetrieinformationen für die Laufzeitumgebung, GC, Bibliotheken und Anwendungscode.

Ereignisquelldaten können mithilfe der System.Diagnostics.Tracing.EventListener API oder mit externen Diagnosetools wie Visual Studio, dotnet-monitor, dotnet-trace, PerfView und den Perfcollect-Skripts erfasst werden. Externe Tools zum Sammeln von Ereignisquellendaten in Traces werden häufig zur Leistungsanalyse verwendet.

EventPipe

EventPipe ist eine Runtimekomponente, die wie ETW oder LTTng zum Erfassen von Ablaufverfolgungsdaten verwendet werden kann. EventPipe soll es .NET-Entwicklern ermöglichen, die Aktivitäten ihrer .NET-Anwendungen problemlos nachverfolgen zu können, ohne sich dabei auf plattformspezifische und betriebssystemnative Komponenten wie ETW oder LTTng verlassen zu müssen.

EventPipe ist der Mechanismus hinter vielen Diagnosetools. Es kann zum Verarbeiten von Ereignissen verwendet werden, die von der Runtime ausgegeben werden, sowie von benutzerdefinierten Ereignissen, die mit EventSource geschrieben wurden.

Ausgaben

Ein Speicherabbild ist eine Datei, die eine Momentaufnahme des Prozesses zum Zeitpunkt der Erstellung des Speicherabbilds enthält. Speicherabbilder können hilfreich sein, wenn Sie den Zustand Ihrer Anwendung zu Debuggingzwecken überprüfen möchten.

Symbole

Symbole sind eine Zuordnung zwischen dem Quellcode und der vom Compiler erzeugten Binärdatei. Diese werden häufig von .NET-Debuggern und Tracing-Tools verwendet, um Quellzeilennummern, Namen lokaler Variablen und andere Arten von Diagnoseinformationen aufzulösen.

Diagnoseport

Die .NET-Runtime macht einen Dienstendpunkt verfügbar, der anderen Prozessen das Senden von Diagnosebefehlen und das Empfangen von Antworten über einen IPC-Kanal ermöglicht. Dieser Endpunkt wird als Diagnoseport bezeichnet. Befehle können zu folgenden Zwecken an den Diagnoseport gesendet werden:

  • Erfassen eines Speicherabbilds
  • EventPipe-Ablaufverfolgung starten.
  • Fordern Sie die zum Starten der App verwendete Befehlszeile an.

DiagnosticSource und DiagnosticListener

DiagnosticSource ist ein Modul, das die Instrumentierung von Code für die Protokollierung umfassender Daten-Payloads während der Produktionszeit ermöglicht, um diese innerhalb des instrumentierten Prozesses zu nutzen. Zur Laufzeit können Verbraucher Datenquellen dynamisch ermitteln und die interessanten abonnieren. System.Diagnostics.DiagnosticSource wurde entwickelt, um prozessinternen Tools den Zugriff auf umfangreiche Daten zu ermöglichen, z. B. durch Open Telemetry-Instrumentierungsbibliotheken. DiagnosticSource-Daten können auch über EventPipe übermittelt werden, wodurch dedizierte Tools umfangreiche Diagnosedaten sammeln können.

Sammeln von Diagnosen in Containern

Dieselben Diagnosetools, die in nicht-containerisierten Linux-Umgebungen verwendet werden, können auch verwendet werden, um Diagnosen in Containern zu sammeln. Es sind nur ein paar Nutzungsänderungen erforderlich, um sicherzustellen, dass die Tools in einem Docker-Container funktionieren.

Siehe auch