Debuggen von Ausnahmen in .NET-Anwendungen mithilfe des Momentaufnahmedebuggers
Wenn diese Option aktiviert ist, sammelt der Momentaufnahmedebugger automatisch eine Debugmomentaufnahme des Quellcodes und der Variablen, wenn eine Ausnahme in Ihrer .NET-Liveanwendung auftritt. Der Momentaufnahmedebugger in Application Insights:
- Überwacht vom System generierte Protokolle Ihrer Web-App.
- Erfasst Momentaufnahmen Ihrer am häufigsten ausgelösten Ausnahmen.
- Stellt Informationen bereit, die Sie für die Diagnose von Problemen in der Produktion benötigen.
Erfahren Sie mehr über die Prozesse Snapshot Debugger und Snapshot Uploader.
Unterstützte Anwendungen und Umgebungen
In diesem Abschnitt werden die unterstützten Anwendungen und Umgebungen aufgeführt.
Anwendungen
Die Momentaufnahmesammlung ist für folgende Anwendungen verfügbar:
- .NET Framework 4.6.2 oder neuere Versionen.
- .NET 6.0 oder höher unter Windows.
Umgebungen
Die folgenden Umgebungen werden unterstützt:
- Azure App Service
- Azure-Funktionen
- Azure Cloud Services mit Betriebssystemfamilie 4 oder höher
- Azure Service Fabric unter Windows Server 2012 R2 oder höher
- Azure Virtual Machines und Azure VM-Skalierungsgruppen unter Windows Server 2012 R2 oder höher
- Lokale virtuelle oder physische Computer unter Windows Server 2012 R2 oder höher oder Windows 8.1 oder höher
Hinweis
Clientanwendungen (z. B. WPF, Windows Forms oder UWP) werden nicht unterstützt.
Voraussetzungen für die Verwendung des Snapshot-Debuggers
Pakete und Konfigurationen
- Schließen Sie das NuGet-Paket für Snapshot Collector in Ihre Anwendung ein.
- Konfigurieren Sie in
ApplicationInsights.config
Parameter für die Erfassung.
Berechtigungen
- Vergewissern Sie sich, dass Sie der Application Insights-Momentaufnahmedebugger-Rolle für das Ziel Application Insights-Momentaufnahmen hinzugefügt werden.
Funktionsweise des Momentaufnahmedebuggers
Der Momentaufnahmedebugger wird als Application Insights-Telemetrieprozessor implementiert. Bei Ausführung der Anwendung wird der Momentaufnahmedebugger-Telemetrieprozessor der systemseitig generierten Protokollpipeline Ihrer Anwendung hinzugefügt.
Wichtig
Momentaufnahmen können personenbezogene Daten oder andere vertrauliche Informationen in Variablen- und Parameterwerten enthalten. Momentaufnahmedaten werden in derselben Region wie Ihre Application Insights-Ressource gespeichert.
Momentaufnahmedebugger-Prozess
Der Momentaufnahmedebugger-Prozess beginnt und endet mit der TrackException
-Methode. Eine Prozessmomentaufnahme ist ein angehaltener Klon des ausgeführten Prozesses, sodass Ihre Benutzer nur wenig bis gar keine Unterbrechungen erleben. Typisches Szenario:
Ihre Anwendung löst
TrackException
aus.Der Momentaufnahmedebugger überwacht Ausnahmen, während sie ausgelöst werden, indem er das
AppDomain.CurrentDomain.FirstChanceException
-Ereignis abonniert.Ein Zähler für die Problem-ID wird inkrementiert.
- Wenn der Zähler den Wert
ThresholdForSnapshotting
erreicht, wird die Problem-ID einem Sammlungsplan hinzugefügt.
Hinweis
Der
ThresholdForSnapshotting
-Standardwert ist 1. Mit diesem Wert muss Ihre App die gleiche Ausnahme also zweimal auslösen, bevor eine Momentaufnahme erstellt wird.- Wenn der Zähler den Wert
Die Problem-ID des Ausnahmeereignisses wird berechnet und mit den Problem-IDs im Sammlungsplan verglichen.
Ist eine Entsprechung mit einer Problem-ID vorhanden, wird eine Momentaufnahme des ausgeführten Prozesses erstellt.
- Der Momentaufnahme wird ein eindeutiger Bezeichner zugewiesen, und die Ausnahme wird mit diesem Bezeichner gekennzeichnet.
Hinweis
Die Rate der Momentaufnahmenerstellung wird durch die Einstellung
SnapshotsPerTenMinutesLimit
begrenzt. Standardmäßig ist das Limit auf eine einzelne Momentaufnahme pro zehn Minuten festgelegt.Nachdem der
FirstChanceException
-Handler zurückgekehrt ist, wird die ausgelöste Ausnahme normal verarbeitet.Die Ausnahme erreicht wieder die Methode
TrackException
und wird zusammen mit dem Momentaufnahmebezeichner an Application Insights gemeldet.
Hinweis
Legen Sie IsEnabledInDeveloperMode
auf true
fest, wenn Sie beim Debuggen in Visual Studio Momentaufnahmen generieren möchten.
Snapshot Uploader-Prozess
Während der Momentaufnahmedebugger-Prozess weiterläuft und den Datenverkehr für die Benutzer ohne größere Unterbrechung bereitstellt, wird die Momentaufnahme an den Momentaufnahmedebugger-Prozess übergeben. In einem typischen Szenario führt der Momentaufnahmedebugger Folgendes aus:
Erstellt einen Minidump.
Lädt den Minidump zusammen mit allen relevanten Symboldateien (.pdb) in Application Insights hoch.
Hinweis
Pro Tag können maximal 50 Momentaufnahmen hochgeladen werden.
Wenn Sie den Momentaufnahmedebugger aktiviert haben, aber keine Momentaufnahmen angezeigt werden, lesen Sie den Leitfaden zur Problembehandlung.
Aktualisieren des Momentaufnahmedebuggers
Für den Momentaufnahmedebugger werden über die integrierte, vorinstallierte Application Insights-Websiteerweiterung automatische Upgrades durchgeführt.
Das manuelle Hinzufügen einer Application Insights-Websiteerweiterung, um den Momentaufnahmedebugger auf dem neuesten Stand zu halten, ist veraltet.
Gemeinkosten
Der Momentaufnahmedebugger ist für die Verwendung in Produktionsumgebungen vorgesehen. Die Standardeinstellungen enthalten Ratenbegrenzungen, um die Auswirkungen auf Ihre Anwendungen zu minimieren.
Es kann jedoch zu geringem CPU-, Arbeitsspeicher- und E/A-Mehraufwand im Zusammenhang mit dem Momentaufnahmedebugger kommen, wie z. B.:
- Wenn eine Ausnahme in Ihrer Anwendung ausgelöst wird
- Wenn der Ausnahmehandler entscheidet, eine Momentaufnahme zu erstellen
- Wenn
TrackException
aufgerufen wird
Es fallen keine zusätzlichen Kosten für das Speichern der Daten an, die vom Momentaufnahmedebugger erfasst werden.
Begrenzungen
In diesem Abschnitt werden die Einschränkungen für den Momentaufnahmedebugger erläutert.
Datenaufbewahrung
Debugmomentaufnahmen werden 15 Tage lang gespeichert. Die Standardrichtlinie zur Datenaufbewahrung wird für jede Anwendung festgelegt. Wenn Sie diesen Wert erhöhen möchten, können Sie eine Erhöhung anfordern, indem Sie einen Supportfall im Azure-Portal eröffnen. Für jede Application Insights-Instanz ist eine maximale Anzahl von 50 Momentaufnahmen pro Tag zulässig.
Veröffentlichen von Symbolen
Der Momentaufnahmedebugger erfordert für die folgenden Aufgaben Symboldateien auf dem Produktionsserver:
- Decodieren von Variablen
- Bereitstellen einer Debugfunktion in Visual Studio
Standardmäßig veröffentlicht Visual Studio 2017 ab Version 15.2 Symbole für Release-Builds, wenn es im App Service veröffentlicht wird.
In Vorgängerversionen müssen Sie der Veröffentlichungsprofildatei vom Typ
.pubxml
die folgende Zeile hinzufügen, um Symbole im Releasemodus zu veröffentlichen:<ExcludeGeneratedDebugSymbol>False</ExcludeGeneratedDebugSymbol>
Stellen Sie bei Azure Compute und anderen Typen sicher, dass die Symboldateien entweder:
- Im gleichen Ordner der Standard-Anwendung
.dll
(in der Regelwwwroot/bin
) oder - Im aktuellen Pfad verfügbar sind.
Weitere Informationen zu den verschiedenen verfügbaren Symboloptionen finden Sie in der Visual Studio-Dokumentation. Damit Sie die besten Ergebnisse erhalten, empfehlen wir Ihnen, Vollständig, Portabel oder Eingebettet zu verwenden.
Optimierte Builds
In einigen Fällen können lokale Variablen in Release-Builds nicht angezeigt werden, weil der JIT-Compiler Optimierungen vornimmt.
In App Service kann der Momentaufnahmedebugger jedoch Auslösemethoden, die Teil seines Sammelplans sind, deoptimieren.
Tipp
Installieren Sie in Ihrer App Service-Instanz die Application Insights-Websiteerweiterung, um Deoptimierungsunterstützung zu erhalten.
Nächste Schritte
Aktivieren des Application Insights-Momentaufnahmedebuggers für Ihre Anwendung: