Debuggen von aktiven ASP.NET Azure-Apps 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 ist nur für Visual Studio 2017 Enterprise Version 15.5 oder höher mit der Azure-Entwicklungsworkload verfügbar. (Auf der Registerkarte Einzelne Komponenten finden Sie ihn unter Debuggen und Testen>Momentaufnahmedebugger.)

    Sofern noch nicht installiert, installieren Sie Visual Studio 2019. Wenn Sie von einer früheren Visual Studio-Installation aus aktualisieren, führen Sie den Visual Studio-Installer aus, und überprüfen Sie die Momentaufnahmedebugger-Komponente in der ASP.NET- und Webentwicklungsworkload.

  • Azure App Service-Plan Basic oder höher.

  • Die Momentaufnahmensammlung ist für folgende Web-Apps verfügbar, die in Azure App Service 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.

Öffnen Ihres Projekts und Starten des Momentaufnahmedebuggers

  1. Öffnen Sie das Projekt, das Sie mit einer Momentaufnahme debuggen möchten.

    Wichtig

    Zum Debuggen mit einer Momentaufnahme müssen Sie dieselbe Version des Quellcodes öffnen, die für Ihren Azure App Service veröffentlicht wird.

  2. Wählen Sie Debuggen > Momentaufnahmedebugger anfügen.... Wählen Sie den Azure App Service, auf dem Ihr Projekt bereitgestellt wird, und ein Azure-Speicherkonto aus, und klicken Sie dann auf Anfügen. Der Momentaufnahmedebugger unterstützt auch Azure Container Service und Azure Virtual Machines (VM) sowie Virtual Machine Scale Sets.

    Launch the snapshot debugger from the Debug menu

    Select Azure Resource

    Wichtig

    Wenn Sie zum ersten Mal Momentaufnahmedebugger anfügen auswählen, werden Sie aufgefordert, die Momentaufnahmedebugger-Websiteerweiterung in Ihrem Azure App Service zu installieren. Diese Installation erfordert einen Neustart des Azure App Service.

    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.

    Visual Studio ist jetzt im Modus des Debuggens von Momentaufnahmen. Snapshot debugging mode

    Im Fenster Module sehen Sie, ob alle Module für den Azure App Service geladen wurden (wählen Sie Debuggen > Windows > Module zum Öffnen des Fensters aus).

    Check the Modules window

Festlegen eines Andockpunkts

  1. 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.

    Set a snappoint

  2. Klicken Sie auf Sammlung starten, um den Andockpunkt zu aktivieren.

    Turn on the snappoint

    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

  1. 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.

    Open a snappoint

  2. Doppelklicken Sie auf den Andockpunkt, um die Momentaufnahme im Code-Editor zu öffnen.

    Inspect snapshot data

    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

  1. Klicken Sie mit der rechten Maustaste auf ein Andockpunktsymbol (die Hohlkugel), und wählen Sie Einstellungen aus.

    Choose Settings

  2. Geben Sie im Fenster für Andockpunkteinstellungen einen Ausdruck ein.

    Type an expression

    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

  1. Klicken Sie mit der rechten Maustaste auf ein Andockpunktsymbol (das blaue Sechseck), und wählen Sie Einstellungen aus.

  2. Wählen Sie im Fenster für Andockpunkteinstellungen Aktionen aus.

    Create a logpoint

  3. 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.

    Logpoint data in the Diagnostic Tools window

    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 (oder ILogger in .NET Core) angezeigt werden können, wie z.B. App Insights.

In diesem Tutorial haben Sie erfahren, wie Sie den Momentaufnahmedebugger für App Services verwenden. Vielleicht wünschen Sie weitere Informationen zu diesem Feature.