Debuggen von aktiven ASP.NET-Apps auf Azure-VMs und Azure-VMSS mit dem Momentaufnahmedebugger
Der Momentaufnahmedebugger erstellt eine Momentaufnahme Ihrer Apps, die sich in der Produktion befinden, wenn Code ausgeführt wird, der für Sie relevant ist. Legen Sie Andockpunkte und Protokollpunkte in Ihrem Code fest, um den Debugger anzuweisen, eine Momentaufnahme zu erstellen. Der Debugger zeigt Fehler ohne Auswirkungen auf den Datenverkehr Ihrer Produktionsanwendung an. Der Momentaufnahmedebugger kann Sie dabei unterstützen, die Zeit zum Beheben von Fehlern, die in Produktionsumgebungen auftreten, erheblich zu reduzieren.
Andockpunkte und Protokollpunkte ähneln Haltepunkten, aber im Gegensatz zu Haltepunkten halten Andockpunkte die Anwendung nicht an, wenn sie erreicht werden. In der Regel dauert das Erfassen einer Momentaufnahme an einem Andockpunkt 10 bis 20 Millisekunden.
In diesem Tutorial werden Sie Folgendes durchführen:
- Starten des Momentaufnahmedebuggers
- Festlegen eines Andockpunkts und Anzeigen einer Momentaufnahme
- Festlegen eines Protokollpunkts
Voraussetzungen
Der Momentaufnahmedebugger für virtuelle Azure-Computer (Virtual Machine, VM) und virtuelle Azure-VM-Skalierungsgruppen ist nur für Visual Studio 2019 Enterprise oder höher mit der Azure-Entwicklungsworkload verfügbar. (Auf der Registerkarte Einzelne Komponenten finden Sie ihn unter Debuggen und Testen>Momentaufnahmedebugger.)
Installieren Sie Visual Studio 2019 Enterprise, falls dies noch nicht geschehen ist.
Die Erfassung von Momentaufnahmen ist für die folgenden Web-Apps verfügbar, die in Azure Virtual Machines oder Virtual Machine Scale Sets (VMSS) ausgeführt werden:
- ASP.NET-Apps, die in .NET Framework 4.6.1 oder höher ausgeführt werden.
- ASP.NET Core-Apps, die in .NET Core 2.0 oder höher unter Windows ausgeführt werden.
Hinweis
Wenn Visual Studio Enterprise unter einer 32-Bit-Version von Windows ausgeführt wird, können in dem Programm keine Momentaufnahmen angezeigt werden.
Öffnen Ihres Projekts und Starten des Momentaufnahmedebuggers
Öffnen Sie das Projekt, das Sie mit einer Momentaufnahme debuggen möchten.
Wichtig
Zum Debuggen der Momentaufnahme, müssen Sie dieselbe Version des Quellcodes öffnen, die in Ihrem Azure Virtual Machine-/Virtual Machine Scale Set-Dienst veröffentlicht.
Wählen Sie Debuggen > Momentaufnahmedebugger anhängen.... Wählen Sie die Azure-VM oder -VM-Skalierungsgruppe, auf der Ihre Web-App bereitgestellt wird, und ein Azure-Speicherkonto aus, und klicken Sie dann auf Anfügen. Der Momentaufnahmedebugger unterstützt auch Azure Kubernetes Service und Azure App Service.
Wichtig
Wenn Sie Momentaufnahmedebugger anfügen zum ersten Mal für Ihren virtuellen Computer auswählen, wird IIS automatisch neu gestartet. Wenn Sie zum ersten Mal für Ihre VM-Skalierungsgruppe auf Momentaufnahmedebugger anfügen klicken, müssen Sie jede VMSS-Instanz manuell aktualisieren.
Hinweis
(Visual Studio 2019 Version 16.2 und höher) Der Momentaufnahmedebugger hat die Azure-Cloudunterstützung aktiviert. Stellen Sie sicher, dass sich sowohl die von Ihnen ausgewählte Azure-Ressource als auch das Azure Storage-Konto in derselben Cloud befinden. Wenden Sie sich an Ihren Azure-Administrator, wenn Sie Fragen zu den Azure-Compliancekonfigurationen Ihres Unternehmens haben.
Die Metadaten für die Module werden anfänglich nicht aktiviert. Wenn Sie zur Web-App navigieren, wird die Schaltfläche Sammlung starten aktiv. Visual Studio ist jetzt im Modus des Debuggens von Momentaufnahmen.
Hinweis
Für VMSS muss der Benutzer die VMSS-Instanzen manuell aktualisieren, nachdem er den Momentaufnahmedebugger zum ersten Mal angefügt hat.
Im Fenster Module wird angezeigt, ob alle Module für die Azure-VM/-VM-Skalierungsgruppe geladen wurden (klicken Sie auf Debuggen > Fenster > Module, um das Fenster zu öffnen).
Festlegen eines Andockpunkts
Klicken Sie im Code-Editor neben einer Codezeile, die Sie interessiert, auf den linken Bundsteg, um einen Andockpunkt festzulegen. Stellen Sie sicher, dass es sich um Code handelt, von dem Sie wissen, dass er ausgeführt wird.
Klicken Sie auf Sammlung starten, um den Andockpunkt zu aktivieren.
Tipp
Sie können nicht schrittweise vorgehen, wenn Sie eine Momentaufnahme anzeigen, aber Sie können mehrere Andockpunkte im Code platzieren, um die Ausführung auf verschiedenen Codezeilen zu verfolgen. Wenn Ihr Code mehrere Andockpunkte enthält, stellt der Momentaufnahmedebugger sicher, dass die zugehörigen Momentaufnahmen aus der gleichen Endbenutzersitzung stammen. Der Momentaufnahmedebugger leistet dies auch dann, wenn viele Benutzer Ihre App aufrufen.
Momentaufnahme erstellen
Nachdem ein Andockpunkt festgelegt wurde, können Sie entweder manuell eine Momentaufnahme über die Browseransicht Ihrer Website generieren, indem Sie die markierte Codezeile ausführen, oder Sie warten, bis Ihre Benutzer eine aus ihrer Website generiert haben.
Überprüfen von Momentaufnahmedaten
Wenn der Andockpunkt erreicht wird, wird eine Momentaufnahme im Fenster „Diagnosetools“ angezeigt. Um dieses Fenster zu öffnen, wählen Sie Debuggen > Windows > Diagnosetools anzeigen aus.
Doppelklicken Sie auf den Andockpunkt, um die Momentaufnahme im Code-Editor zu öffnen.
In dieser Ansicht können Sie den Cursor über Variablen platzieren, um DataTips anzuzeigen, die Fenster Lokal, Überwachungen und Aufrufliste verwenden und auch Ausdrücke auswerten.
Die Website selbst ist noch aktiv, und Endbenutzer sind nicht betroffen. Standardmäßig wird pro Andockpunkt nur eine einzige Momentaufnahme erfasst: Nachdem eine Momentaufnahme erfasst wurde, wird der Andockpunkt deaktiviert. Wenn Sie eine andere Momentaufnahme an dem Andockpunkt erfassen möchten, können Sie den Andockpunkt durch Klicken auf Sammlung aktualisieren wieder aktivieren.
Sie können Ihrer App auch weitere Andockpunkte hinzufügen und sie mit der Schaltfläche Sammlung aktualisieren aktivieren.
Sie brauchen Hilfe? Lesen Sie die Seiten Problembehandlung und bekannte Probleme beim Debuggen von Momentaufnahmen in Visual Studio und Häufig gestellte Fragen zum Debuggen von Momentaufnahmen in Visual Studio.
Festlegen eines bedingten Andockpunkts
Wenn es schwierig ist, einen bestimmten Zustand in Ihrer App zu reproduzieren, erwägen Sie die Verwendung eines bedingten Andockpunkts. Bedingte Andockpunkte helfen Ihnen, zu steuern, wann eine Momentaufnahme erstellt werden soll, wenn z. B. eine Variable einen bestimmten Wert aufweist, den Sie untersuchen möchten. Sie können Bedingungen mithilfe von Ausdrücken, Filtern oder Trefferanzahl festlegen.
So erstellen Sie einen bedingten Andockpunkt
Klicken Sie mit der rechten Maustaste auf ein Andockpunktsymbol (die Hohlkugel), und wählen Sie Einstellungen aus.
Geben Sie im Fenster für Andockpunkteinstellungen einen Ausdruck ein.
In der vorherigen Abbildung wird die Momentaufnahme nur dann für den Andockpunkt erstellt, wenn
visitor.FirstName == "Dan"
.
Festlegen eines Protokollpunkts
Zusätzlich zum Erstellen einer Momentaufnahme, wenn ein Andockpunkt erreicht wird, können Sie auch einen Andockpunkt zum Protokollieren einer Meldung konfigurieren (d.h. einen Protokollpunkt erstellen). Sie können Protokollpunkte festlegen, ohne Ihre App erneut bereitstellen zu müssen. Protokollpunkte werden virtuell ausgeführt und verursachen weder direkte Auswirkungen auf Ihre ausgeführte Anwendung noch Nebeneffekte.
So erstellen Sie einen Protokollpunkt
Klicken Sie mit der rechten Maustaste auf ein Andockpunktsymbol (das blaue Sechseck), und wählen Sie Einstellungen aus.
Wählen Sie im Fenster für Andockpunkteinstellungen Aktionen aus.
Im Feld Meldung können Sie die neue Protokollmeldung eingeben, die Sie protokollieren möchten. Sie können auch Variablen in der Protokollmeldung auswerten, indem Sie sie in geschweiften Klammern platzieren.
Wenn Sie An Ausgabefenster senden auswählen, wenn der Protokollpunkt erreicht wird, wird die Meldung im Fenster „Diagnosetools“ angezeigt.
Wenn Sie An Anwendungsprotokoll senden auswählen, wenn der Protokollpunkt erreicht wird, wird die Meldung an einer beliebigen Stelle angezeigt, wo Meldungen von
System.Diagnostics.Trace
(oderILogger
in .NET Core) angezeigt werden können, wie z.B. App Insights.
Zugehöriger Inhalt
In diesem Tutorial haben Sie gelernt, den Momentaufnahmedebugger für Azure-VMs und Azure-VMSSs zu verwenden. Vielleicht wünschen Sie weitere Informationen zu diesem Feature.