Debuggen von aktiven ASP.NET Azure-Apps mit dem MomentaufnahmedebuggerDebug live ASP.NET Azure apps using the Snapshot Debugger

Der Momentaufnahmedebugger erstellt eine Momentaufnahme Ihrer Apps, die sich in der Produktion befinden, wenn Code ausgeführt wird, der für Sie relevant ist.The Snapshot Debugger takes a snapshot of your in-production apps when code that you're interested in executes. Legen Sie Andockpunkte und Protokollpunkte in Ihrem Code fest, um den Debugger anzuweisen, eine Momentaufnahme zu erstellen.To instruct the debugger to take a snapshot, you set snappoints and logpoints in your code. Der Debugger zeigt Fehler ohne Auswirkungen auf den Datenverkehr Ihrer Produktionsanwendung an.The debugger lets you see exactly what went wrong, without impacting traffic of your production application. Der Momentaufnahmedebugger kann Sie dabei unterstützen, die Zeit zum Beheben von Fehlern, die in Produktionsumgebungen auftreten, erheblich zu reduzieren.The Snapshot Debugger can help you dramatically reduce the time it takes to resolve issues that occur in production environments.

Andockpunkte und Protokollpunkte ähneln Haltepunkten, aber im Gegensatz zu Haltepunkten halten Andockpunkte die Anwendung nicht an, wenn sie erreicht werden.Snappoints and logpoints are similar to breakpoints, but unlike breakpoints, snappoints don't halt the application when hit. In der Regel dauert das Erfassen einer Momentaufnahme an einem Andockpunkt 10 bis 20 Millisekunden.Typically, capturing a snapshot at a snappoint takes 10-20 milliseconds.

In diesem Tutorial werden Sie Folgendes durchführen:In this tutorial, you will:

  • Starten des MomentaufnahmedebuggersStart the Snapshot Debugger
  • Festlegen eines Andockpunkts und Anzeigen einer MomentaufnahmeSet a snappoint and view a snapshot
  • Festlegen eines ProtokollpunktsSet a logpoint

VoraussetzungenPrerequisites

  • Der Momentaufnahmedebugger ist nur für Visual Studio 2017 Enterprise Version 15.5 oder höher mit der Azure-Entwicklungsworkload verfügbar.Snapshot Debugger is only available starting in Visual Studio 2017 Enterprise version 15.5 or higher with the Azure development workload. (Auf der Registerkarte Einzelne Komponenten finden Sie ihn unter Debuggen und Testen > Momentaufnahmedebugger.)(Under the Individual components tab, you find it under Debugging and testing > Snapshot debugger.)

    Sofern noch nicht installiert, installieren Sie Visual Studio 2019.If it's not already installed, install 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.If you're updating from a previous Visual Studio installation, run the Visual Studio Installer and check the Snapshot Debugger component in the ASP.NET and web development workload.

    Falls noch nicht installiert, installieren Sie Visual Studio 2017 Enterprise Version 15.5 oder höher.If it's not already installed, install Visual Studio 2017 Enterprise version 15.5 or later. Wenn Sie von einer früheren Visual Studio 2017-Installation aus aktualisieren, führen Sie den Visual Studio-Installer aus, und überprüfen Sie die Momentaufnahmedebugger-Komponente in der ASP.NET- und Webentwicklungsworkload.If you're updating from a previous Visual Studio 2017 installation, run the Visual Studio Installer and check the Snapshot Debugger component in the ASP.NET and web development workload.

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

  • Die Momentaufnahmensammlung ist für folgende Web-Apps verfügbar, die in Azure App Service ausgeführt werden:Snapshot collection is available for the following web apps running in Azure App Service:

    • ASP.NET-Apps, die in .NET Framework 4.6.1 oder höher ausgeführt werden.ASP.NET applications running on .NET Framework 4.6.1 or later.
    • ASP.NET Core-Apps, die in .NET Core 2.0 oder höher unter Windows ausgeführt werden.ASP.NET Core applications running on .NET Core 2.0 or later on Windows.

Öffnen Ihres Projekts und Starten des MomentaufnahmedebuggersOpen your project and start the Snapshot Debugger

  1. Öffnen Sie das Projekt, das Sie mit einer Momentaufnahme debuggen möchten.Open the project you would like to snapshot debug.

    Wichtig

    Zum Debuggen mit einer Momentaufnahme müssen Sie dieselbe Version des Quellcodes öffnen, die für Ihren Azure App Service veröffentlicht wird.To snapshot debug, you need to open the same version of source code that is published to your Azure App Service.

  1. Klicken Sie im Cloud-Explorer (Ansicht > Cloud-Explorer) mit der rechten Maustaste auf den Azure App Service, für den Ihr Projekt bereitgestellt ist, und wählen Sie Momentaufnahmedebugger anfügen aus.In the Cloud Explorer (View > Cloud Explorer), right-click the Azure App Service your project is deployed to and select Attach Snapshot Debugger.

    Starten des Momentaufnahmedebuggers

  1. Wählen Sie Debuggen > Momentaufnahmedebugger anfügen aus. Wählen Sie den Azure App Service aus, für den Ihr Projekt bereitgestellt wird, und ein Azure Storage-Konto, und klicken Sie dann auf Anfügen.Choose Debug > Attach Snapshot Debugger.... Select the Azure App Service your project is deployed to and an Azure storage account, and then click Attach. Der Momentaufnahmedebugger unterstützt auch Azure Container Service und Azure Virtual Machines (VM) sowie Virtual Machine Scale Sets.Snapshot Debugger also supports Azure Kubernetes Service and Azure Virtual Machines (VM) & Virtual Machine Scale Sets.

    Starten des Momentaufnahmedebuggers im Menü „Debuggen“

    Auswählen der Azure-Ressource

Wichtig

Wenn Sie zum ersten Mal Momentaufnahmedebugger anfügen auswählen, werden Sie aufgefordert, die Momentaufnahmedebugger-Websiteerweiterung in Ihrem Azure App Service zu installieren.The first time you select Attach Snapshot Debugger, you're prompted to install the Snapshot Debugger site extension on your Azure App Service. Diese Installation erfordert einen Neustart des Azure App Service.This installation requires a restart of your Azure App Service.

Hinweis

Die Application Insights-Websiteerweiterung unterstützt auch das Debuggen von Momentaufnahmen.The Application Insights site extension also supports Snapshot Debugging. Wenn Sie eine „Websiteerweiterung veraltet“-Fehlermeldung erhalten, finden Sie unter Problembehandlung und bekannte Probleme beim Debuggen von Momentaufnahmen in Visual Studio weitere Informationen zum Aktualisieren.If you come across a "site extension out of date" error message, see troubleshooting tips and known issues for snapshot debugging for upgrading details.

Hinweis

(Visual Studio 2019 Version 16.2 und höher) Der Momentaufnahmedebugger hat die Azure-Cloudunterstützung aktiviert.(Visual Studio 2019 version 16.2 and above) Snapshot Debugger has enabled Azure cloud support. Stellen Sie sicher, dass sich sowohl die von Ihnen ausgewählte Azure-Ressource als auch das Azure Storage-Konto in derselben Cloud befinden.Make sure that both the Azure resource and Azure Storage account you select are from the same cloud. Wenden Sie sich an Ihren Azure-Administrator, wenn Sie Fragen zu Ihren Azure-Compliancekonfigurationen Ihres Unternehmens haben.Please contact your Azure administrator if you have questions about your enterprise's Azure compliance configurations.

Visual Studio ist jetzt im Modus des Debuggens von Momentaufnahmen.Visual Studio is now in snapshot debugging mode. Modus des Debuggens von MomentaufnahmenSnapshot debugging mode

Im Fenster Module sehen Sie, ob alle Module für den Azure App Service geladen wurden (wählen Sie Debuggen > Fenster > Module zum Öffnen des Fensters aus).The Modules window shows you when all the modules have loaded for the Azure App Service (choose Debug > Windows > Modules to open this window).

Überprüfen des Fensters „Module“

Festlegen eines AndockpunktsSet a snappoint

  1. Klicken Sie im Code-Editor neben einer Codezeile, die Sie interessiert, auf den linken Bundsteg, um einen Andockpunkt festzulegen.In the code editor, click the left gutter next to a line of code you're interested in to set a snappoint. Stellen Sie sicher, dass es sich um Code handelt, von dem Sie wissen, dass er ausgeführt wird.Make sure it's code that you know will execute.

    Festlegen eines Andockpunkts

  2. Klicken Sie auf Sammlung starten, um den Andockpunkt zu aktivieren.Click Start Collection to turn on the snappoint.

    Aktivieren des Andockpunkts

    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.You can't step when viewing a snapshot, but you can place multiple snappoints in your code to follow execution at different lines of code. Wenn Ihr Code mehrere Andockpunkte enthält, stellt der Momentaufnahmedebugger sicher, dass die zugehörigen Momentaufnahmen aus der gleichen Endbenutzersitzung stammen.If you have multiple snappoints in your code, the Snapshot Debugger makes sure that the corresponding snapshots are from the same end-user session. Der Momentaufnahmedebugger leistet dies auch dann, wenn viele Benutzer Ihre App aufrufen.The Snapshot Debugger does this even if there are many users hitting your app.

Momentaufnahme erstellenTake a snapshot

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.Once a snappoint is set, you can either manually generate a snapshot by going to the browser view of your web site and running the line of code marked or wait for your users to generate one from their usage of the site.

Überprüfen von MomentaufnahmedatenInspect snapshot data

  1. Wenn der Andockpunkt erreicht wird, wird eine Momentaufnahme im Fenster „Diagnosetools“ angezeigt.When the snappoint is hit, a snapshot appears in the Diagnostic Tools window. Um dieses Fenster zu öffnen, wählen Sie Debuggen > Fenster > Diagnosetools anzeigen aus.To open this window, choose Debug > Windows > Show Diagnostic Tools.

    Öffnen eines Andockpunkts

  2. Doppelklicken Sie auf den Andockpunkt, um die Momentaufnahme im Code-Editor zu öffnen.Double-click the snappoint to open the snapshot in the code editor.

    Überprüfen von Momentaufnahmedaten

    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.From this view, you can hover over variables to view DataTips, use the Locals, Watches, and Call Stack windows, and also evaluate expressions.

    Die Website selbst ist noch aktiv, und Endbenutzer sind nicht betroffen.The website itself is still live and end users aren't affected. Standardmäßig wird pro Andockpunkt nur eine einzige Momentaufnahme erfasst: Nachdem eine Momentaufnahme erfasst wurde, wird der Andockpunkt deaktiviert.Only one snapshot is captured per snappoint by default: after a snapshot is captured the snappoint turns off. Wenn Sie eine andere Momentaufnahme an dem Andockpunkt erfassen möchten, können Sie den Andockpunkt durch Klicken auf Sammlung aktualisieren wieder aktivieren.If you want to capture another snapshot at the snappoint, you can turn the snappoint back on by clicking Update Collection.

Sie können Ihrer App auch weitere Andockpunkte hinzufügen und sie mit der Schaltfläche Sammlung aktualisieren aktivieren.You can also add more snappoints to your app and turn them on with the Update Collection button.

Benötigen Sie Hilfe?Need help? 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.See the Troubleshooting and known issues and FAQ for snapshot debugging pages.

Festlegen eines bedingten AndockpunktsSet a conditional snappoint

Wenn es schwierig ist, einen bestimmten Status in Ihrer App neu herzustellen, erwägen Sie die Verwendung eines bedingten Andockpunkts.If it's difficult to recreate a particular state in your app, consider using a conditional snappoint. 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.Conditional snappoints help you control when to take a snapshot such as when a variable contains a particular value that you want to inspect. Sie können Bedingungen mithilfe von Ausdrücken, Filtern oder Trefferanzahl festlegen.You can set conditions using expressions, filters, or hit counts.

So erstellen Sie einen bedingten AndockpunktTo create a conditional snappoint

  1. Klicken Sie mit der rechten Maustaste auf ein Andockpunktsymbol (die hohle Kugel), und wählen Sie Einstellungen aus.Right-click a snappoint icon (the hollow ball) and choose Settings.

    Einstellung auswählen

  2. Geben Sie im Fenster für Andockpunkteinstellungen einen Ausdruck ein.In the snappoint settings window, type an expression.

    Eingeben eines Ausdrucks

    In der vorherigen Abbildung wird die Momentaufnahme nur dann für den Andockpunkt erstellt, wenn visitor.FirstName == "Dan".In the preceding illustration, the snapshot is only taken for the snappoint when visitor.FirstName == "Dan".

Festlegen eines ProtokollpunktsSet a logpoint

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).In addition to taking a snapshot when a snappoint is hit, you can also configure a snappoint to log a message (that is, create a logpoint). Sie können Protokollpunkte festlegen, ohne Ihre App erneut bereitstellen zu müssen.You can set logpoints without having to redeploy your app. Protokollpunkte werden virtuell ausgeführt und verursachen weder direkte Auswirkungen auf Ihre ausgeführte Anwendung noch Nebeneffekte.Logpoints are executed virtually and cause no impact or side effects to your running application.

So erstellen Sie einen ProtokollpunktTo create a logpoint

  1. Klicken Sie mit der rechten Maustaste auf ein Andockpunktsymbol (das blaue Sechseck), und wählen Sie Einstellungen aus.Right-click a snappoint icon (the blue hexagon) and choose Settings.

  2. Wählen Sie im Fenster für Andockpunkteinstellungen Aktionen aus.In the snappoint settings window, select Actions.

    Erstellen eines Protokollpunkts

  3. Im Feld Meldung können Sie die neue Protokollmeldung eingeben, die Sie protokollieren möchten.In the Message field, you can enter the new log message you want to log. Sie können auch Variablen in der Protokollmeldung auswerten, indem Sie sie in geschweiften Klammern platzieren.You can also evaluate variables in your log message by placing them inside curly braces.

    Wenn Sie An Ausgabefenster senden auswählen, wenn der Protokollpunkt erreicht wird, wird die Meldung im Fenster „Diagnosetools“ angezeigt.If you choose Send to Output Window, when the logpoint is hit, the message appears in the Diagnostic Tools window.

    Protokollpunktdaten im Fenster „Diagnosetools“

    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.If you choose Send to application log, when the logpoint is hit, the message appears anywhere that you can see messages from System.Diagnostics.Trace (or ILogger in .NET Core), such as App Insights.

Nächste SchritteNext steps

In diesem Tutorial haben Sie erfahren, wie Sie den Momentaufnahmedebugger für App Services verwenden.In this tutorial, you've learned how to use the Snapshot Debugger for App Services. Vielleicht wünschen Sie weitere Informationen zu diesem Feature.You may want to read more details about this feature.