Debuggen der Service Fabric-Anwendung mithilfe von Visual StudioDebug your Service Fabric application by using Visual Studio

Debuggen einer lokalen Service Fabric-AnwendungDebug a local Service Fabric application

Sie können Zeit und Geld sparen, indem Sie Ihre Azure Service Fabric-Anwendung in einem Cluster für die Entwicklung auf einem lokalen Computer bereitstellen und debuggen.You can save time and money by deploying and debugging your Azure Service Fabric application in a local computer development cluster. Visual Studio 2019 oder 2015 kann die Anwendung im lokalen Cluster bereitstellen und den Debugger automatisch mit allen Instanzen der Anwendung verbinden.Visual Studio 2019 or 2015 can deploy the application to the local cluster and automatically connect the debugger to all instances of your application. Visual Studio muss als Administrator ausgeführt werden, um eine Verbindung mit dem Debugger herstellen zu können.Visual Studio must be run as Administrator to connect the debugger.

  1. Um einen lokalen Cluster für die Entwicklung zu erstellen, folgen Sie den Schritten unter Einrichten der Service Fabric-Entwicklungsumgebung.Start a local development cluster by following the steps in Setting up your Service Fabric development environment.

  2. Drücken Sie F5 oder klicken Sie auf Debuggen > Debugging starten.Press F5 or click Debug > Start Debugging.

    Anwendung debuggen

  3. Legen Sie Haltepunkte im Code fest und durchlaufen Sie die Anwendung mit den Befehlen im Menü Debuggen .Set breakpoints in your code and step through the application by clicking commands in the Debug menu.

    Hinweis

    Visual Studio wird an alle Instanzen der Anwendung angefügt.Visual Studio attaches to all instances of your application. Wenn Sie den Code durchlaufen, können Haltepunkte von mehreren Prozessen gleichzeitig erreicht werden, sodass es zu gleichzeitigen Sitzungen kommt.While you're stepping through code, breakpoints may get hit by multiple processes resulting in concurrent sessions. Versuchen Sie, die Haltepunkte nach dem Erreichen zu deaktivieren, indem Sie jeden Haltepunkt von der Thread-ID abhängig machen oder Diagnoseereignisse verwenden.Try disabling the breakpoints after they're hit, by making each breakpoint conditional on the thread ID or by using diagnostic events.

  4. Das Fenster Diagnoseereignisse wird automatisch geöffnet, sodass Sie die Diagnoseereignisse in Echtzeit sehen können.The Diagnostic Events window will automatically open so you can view diagnostic events in real time.

    Diagnoseereignisse in Echtzeit anzeigen

  5. Sie können das Fenster Diagnoseereignisse auch im Cloud-Explorer öffnen.You can also open the Diagnostic Events window in Cloud Explorer. Klicken Sie unter Service Fabric mit der rechten Maustaste auf einen beliebigen Knoten, und wählen Sie Streamingablaufverfolgungen anzeigen aus.Under Service Fabric, right-click any node and choose View Streaming Traces.

    Fenster mit Diagnoseereignissen öffnen

    Wenn Sie Ihre Ablaufverfolgungen nach einem bestimmten Dienst oder einer bestimmten Anwendung filtern möchten, müssen Sie das Streaming von Ablaufverfolgungen in diesem Dienst oder dieser Anwendung aktivieren.If you want to filter your traces to a specific service or application, enable streaming traces on that specific service or application.

  6. Sie können die Diagnoseereignisse in der automatisch generierten Datei ServiceEventSource.cs anzeigen und im Anwendungscode aufrufen.The diagnostic events can be seen in the automatically generated ServiceEventSource.cs file and are called from application code.

    ServiceEventSource.Current.ServiceMessage(this, "My ServiceMessage with a parameter {0}", result.Value.ToString());
    
  7. Im Fenster Diagnoseereignisse können Ereignisse in Echtzeit gefiltert, angehalten und geprüft werden.The Diagnostic Events window supports filtering, pausing, and inspecting events in real time. Der Filter ist eine einfache Zeichenfolgensuche in der Ereignismeldung und ihrem Inhalt.The filter is a simple string search of the event message, including its contents.

    Ereignisse in Echtzeit filtern, anhalten und fortsetzen oder prüfen

  8. Das Debuggen von Diensten ist vergleichbar mit dem Debuggen jeder beliebigen anderen Anwendung.Debugging services is like debugging any other application. Um das Debuggen zu vereinfachen, legen Sie in der Regel Haltepunkte in Visual Studio fest.You'll normally set Breakpoints through Visual Studio for easy debugging. Obwohl Reliable Collections in mehreren Knoten repliziert werden, wird dennoch IEnumerable implementiert.Even though Reliable Collections replicate across multiple nodes, they still implement IEnumerable. Diese Implementierung bedeutet, dass Sie beim Debuggen die Ergebnisansicht in Visual Studio verwenden können, um den darin gespeicherten Inhalt anzuzeigen.This implementation means that you can use the Results View in Visual Studio while you debug to see what you've stored inside. Legen Sie hierfür an einer beliebigen Stelle im Code einen Haltepunkt fest.To do so, set a breakpoint anywhere in your code.

    Anwendung debuggen

Ausführen eines Skripts beim DebuggenRunning a script as part of debugging

In bestimmten Szenarien müssen Sie möglicherweise beim Start einer Debugsitzung ein Skript ausführen (wenn Sie z. B. keine Standarddienste verwenden).In certain scenarios you might need to run a script as part of starting a debugging session (e.g. when not using Default Services).

In Visual Studio können Sie die Datei Start-Service.ps1 im OrdnerScripts des Service Fabric-Anwendungsprojekts (.sfproj) hinzufügen.In Visual Studio, you can add a file called Start-Service.ps1 in the Scripts folder of the Service Fabric Application project (.sfproj). Dieses Skript wird aufgerufen, nachdem die Anwendung im lokalen Cluster erstellt wurde.This script will be invoked after the application has been created in the local cluster.

Debuggen einer Service Fabric-RemoteanwendungDebug a remote Service Fabric application

Wenn Ihre Service Fabric-Anwendungen auf einem Service Fabric-Cluster in Azure ausgeführt werden, können Sie das Remotedebuggen hierfür direkt aus Visual Studio durchführen.If your Service Fabric applications are running on a Service Fabric cluster in Azure, you can remotely debug these applications, directly from Visual Studio.

Hinweis

Die Funktion benötigt Service Fabric SDK 2.0 und Azure SDK für .NET 2.9.The feature requires Service Fabric SDK 2.0 and Azure SDK for .NET 2.9.

Warnung

Das Remotedebuggen ist für Entwicklungs-/Testszenarios vorgesehen und sollte aufgrund der Auswirkung auf ausgeführte Anwendungen nicht in Produktionsumgebungen verwendet werden.Remote debugging is meant for dev/test scenarios and not to be used in production environments, because of the impact on the running applications.

  1. Navigieren Sie im Cloud-Explorer zu Ihrem Cluster.Navigate to your cluster in Cloud Explorer. Klicken Sie mit der rechten Maustaste, und wählen Sie Debuggen aktivieren.Right-click and choose Enable Debugging

    Aktivieren des Remotedebuggens

    Durch diese Aktion wird der Vorgang zum Aktivieren der Erweiterung zum Remotedebuggen auf Ihren Clusterknoten und für die benötigten Netzwerkkonfigurationen gestartet.This action will kick off the process of enabling the remote debugging extension on your cluster nodes and required network configurations.

  2. Klicken Sie im Cloud-Explorer mit der rechten Maustaste auf den Clusterknoten, und wählen Sie Debugger anfügen aus.Right-click the cluster node in Cloud Explorer, and choose Attach Debugger

    Debugger anfügen

  3. Wählen Sie im Dialogfeld An den Prozess anfügen den Prozess, den Sie debuggen möchten, und klicken Sie auf Anfügen.In the Attach to process dialog, choose the process you want to debug, and click Attach

    Prozess wählen

    Der Name des Prozesses, an den Sie anhängen möchten, ist derselbe Name wie Ihr Dienstprojekt-Assemblyname.The name of the process you want to attach to, equals the name of your service project assembly name.

    Der Debugger wird an alle den Prozess ausführenden Knoten angehängt.The debugger will attach to all nodes running the process.

    • Falls Sie einen zustandslosen Dienst debuggen, sind alle Instanzen des Diensts auf allen Knoten Teil der Debugsitzung.In the case where you're debugging a stateless service, all instances of the service on all nodes are part of the debug session.

    • Falls Sie einen zustandsbehafteten Dienst debuggen, ist nur das primäre Replikat der jeweiligen Partition aktiv und wird somit vom Debugger behandelt.If you're debugging a stateful service, only the primary replica of any partition will be active and therefore caught by the debugger. Falls das primäre Replikat während der Debugsitzung verschoben wird, ist die Verarbeitung dieses Replikats immer noch Teil der Debugsitzung.If the primary replica moves during the debug session, the processing of that replica will still be part of the debug session.

    • Um nur relevante Partitionen oder Instanzen eines bestimmten Diensts abzufangen, können Sie bedingte Haltepunkte verwenden, damit nur eine bestimmte Partition oder Instanz unterbrochen wird.To only catch relevant partitions or instances of a given service, you can use conditional breakpoints to only break a specific partition or instance.

      Bedingter Haltepunkt

      Hinweis

      Das Debuggen eines Service Fabric-Clusters mit mehreren Instanzen desselben Namens des ausführbaren Diensts wird derzeit nicht unterstützt.Currently we do not support debugging a Service Fabric cluster with multiple instances of the same service executable name.

  4. Nach dem Debuggen Ihrer Anwendung können Sie die Erweiterung für das Remotedebuggen deaktivieren, indem Sie im Cloud-Explorer mit der rechten Maustaste auf den Cluster klicken und Debuggen deaktivieren auswählen.Once you finish debugging your application, you can disable the remote debugging extension by right-clicking the cluster in Cloud Explorer and choose Disable Debugging

    Deaktivieren des Remotedebuggen

Streaming von Ablaufverfolgungen aus einem RemoteclusterknotenStreaming traces from a remote cluster node

Sie können Ablaufverfolgungen von einem Remoteclusterknoten aus auch direkt zu Visual Studio streamen.You're also able to stream traces directly from a remote cluster node to Visual Studio. Diese Funktion ermöglicht es Ihnen, auf einem Service Fabric-Cluster erstellte ETW-Ablaufverfolgungsereignisse zu streamen.This feature allows you to stream ETW trace events, produced on a Service Fabric cluster node.

Hinweis

Die Funktion benötigt Service Fabric SDK 2.0 und Azure SDK für .NET 2.9.This feature requires Service Fabric SDK 2.0 and Azure SDK for .NET 2.9. Diese Funktion unterstützt nur in Azure ausgeführte Cluster.This feature only supports clusters running in Azure.

Warnung

Das Streaming von Ablaufverfolgungen ist für Entwicklungs-/Testszenarios vorgesehen und sollte aufgrund der Auswirkung auf ausgeführte Anwendungen nicht in Produktionsumgebungen verwendet werden.Streaming traces is meant for dev/test scenarios and not to be used in production environments, because of the impact on the running applications. In einem Produktionsszenario sollten Sie sich auf das Weiterleiten von Ereignissen mithilfe von Azure-Diagnose verlassen.In a production scenario, you should rely on forwarding events using Azure Diagnostics.

  1. Navigieren Sie im Cloud-Explorer zu Ihrem Cluster.Navigate to your cluster in Cloud Explorer. Klicken Sie mit der rechten Maustaste, und wählen Sie Streamingablaufverfolgungen aktivieren.Right-click and choose Enable Streaming Traces

    Aktivieren des Remotestreaming von Ablaufverfolgungen

    Mit dieser Aktion wird der Vorgang zum Aktivieren der Erweiterung zum Streamen von Ablaufverfolgungen auf Ihren Clusterknoten sowie der benötigten Netzwerkkonfigurationen gestartet.This action will kick off the process of enabling the streaming traces extension on your cluster nodes, as well as required network configurations.

  2. Erweitern Sie im Cloud-Explorer das Knoten-Element, klicken Sie mit der rechten Maustaste auf den Knoten, von dem aus Sie Ablaufverfolgungen streamen möchten, und wählen Sie Streamingablaufverfolgungen anzeigen aus.Expand the Nodes element in Cloud Explorer, right-click the node you want to stream traces from and choose View Streaming Traces

    Remotestreaming von Ablaufverfolgungen anzeigen

    Wiederholen Sie Schritt 2 für beliebig viele Knoten, von denen Sie Ablaufverfolgungen anzeigen möchten.Repeat step 2 for as many nodes as you want to see traces from. Der Datenstrom jedes Knotens wird in einem dedizierten Fenster angezeigt.Each nodes stream will show up in a dedicated window.

    Sie können jetzt die von Service Fabric und Ihren Diensten ausgegebenen Ablaufverfolgungen sehen.You are now able to see the traces emitted by Service Fabric, and your services. Falls Sie die Ereignisse filtern möchten, damit nur eine bestimmte Anwendung angezeigt wird, geben Sie einfach den Namen der Anwendung in den Filter ein.If you want to filter the events to only show a specific application, simply type in the name of the application in the filter.

    Streaming von Ablaufverfolgungen anzeigen

  3. Sobald Sie mit dem Streamen von Ablaufverfolgungen von Ihrem Cluster fertig sind, können Sie das Remotestreaming von Ablaufverfolgungen deaktivieren, indem Sie im Cloud-Explorer mit der rechten Maustaste auf Ihren Cluster klicken und Streamingablaufverfolgungen deaktivieren auswählen.Once you are done streaming traces from your cluster, you can disable remote streaming traces, by right-clicking the cluster in Cloud Explorer and choose Disable Streaming Traces

    Deaktivieren des Remotestreamingsvon Ablaufverfolgungen

Nächste SchritteNext steps