Visual Studio による Service Fabric アプリケーションのデバッグDebug your Service Fabric application by using Visual Studio

ローカルの Service Fabric アプリケーションをデバッグするDebug a local Service Fabric application

ローカル コンピューターの開発クラスターで Azure Service Fabric アプリケーションをデプロイしデバッグすることにより、時間と費用を節約できます。You can save time and money by deploying and debugging your Azure Service Fabric application in a local computer development cluster. Visual Studio 2019 または 2015 は、アプリケーションをローカル クラスターにデプロイし、デバッガーをアプリケーションのすべてのインスタンスに自動的に接続できます。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 が管理者として実行されている必要があります。Visual Studio must be run as Administrator to connect the debugger.

  1. Service Fabric 開発環境の設定」にある手順に従って、ローカル開発クラスターを開始してください。Start a local development cluster by following the steps in Setting up your Service Fabric development environment.

  2. F5 キーを押すか、 [デバッグ] > [デバッグの開始] の順にクリックしますPress F5 or click Debug > Start Debugging .

    [デバッグ] メニューを示すスクリーンショット。

  3. コードにブレークポイントを設定し、 [デバッグ] メニューのコマンドをクリックしてアプリケーションをステップ実行します。Set breakpoints in your code and step through the application by clicking commands in the Debug menu.

    注意

    Visual Studio は、アプリケーションのすべてのインスタンスにアタッチします。Visual Studio attaches to all instances of your application. コードのステップ実行中に、ブレークポイントに複数のプロセスがヒットして、同時セッションになる場合があります。While you're stepping through code, breakpoints may get hit by multiple processes resulting in concurrent sessions. ヒットしたブレークポイントを無効にし、ブレークポイントをスレッド ID の条件付きにするか、診断イベントを使用します。Try disabling the breakpoints after they're hit, by making each breakpoint conditional on the thread ID or by using diagnostic events.

  4. [診断イベント] ウィンドウが自動的に開き、診断イベントをリアルタイムで表示します。The Diagnostic Events window will automatically open so you can view diagnostic events in real time.

    リアルタイムに診断イベントを表示する

  5. [診断イベント] ウィンドウは、Cloud Explorer で開くこともできます。You can also open the Diagnostic Events window in Cloud Explorer. [Service Fabric] の下で任意のノードを右クリックし、 [ストリーミング トレースを表示する] を選択します。Under Service Fabric , right-click any node and choose View Streaming Traces .

    診断イベント ウィンドウを開く

    トレースを特定のサービスまたはアプリケーションにフィルター処理する場合は、その特定のサービスまたはアプリケーションでストリーミング トレースを有効にします。If you want to filter your traces to a specific service or application, enable streaming traces on that specific service or application.

  6. 診断イベントは自動的に生成される ServiceEventSource.cs でも確認でき、アプリケーション コードから呼び出されます。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. [診断イベント] ウィンドウは、フィルター処理、一時停止、およびリアルタイムのイベント検査をサポートしています。The Diagnostic Events window supports filtering, pausing, and inspecting events in real time. このフィルターは、イベント メッセージとその内容の単純な文字列検索です。The filter is a simple string search of the event message, including its contents.

    フィルター処理、一時停止と再開、またはリアルタイムのイベント検査

  8. サービスのデバッグは、その他のアプリケーションのデバッグと似ています。Debugging services is like debugging any other application. 通常は、デバッグを容易にするために Visual Studio を使用してブレークポイントを設定します。You'll normally set Breakpoints through Visual Studio for easy debugging. Reliable Collections は複数のノード間で複製されますが、IEnumerable は実装されます。Even though Reliable Collections replicate across multiple nodes, they still implement IEnumerable. この実装は、デバッグ中に Visual Studio の結果ビューを使用して、内部で何を格納したかを確認できることを示します。This implementation means that you can use the Results View in Visual Studio while you debug to see what you've stored inside. それを行うには、コード内の任意の場所にブレークポイントを設定します。To do so, set a breakpoint anywhere in your code.

    アプリケーションのデバッグを開始する

デバッグの一部としてのスクリプトの実行Running a script as part of debugging

特定のシナリオでは、デバッグ セッションの開始の一部としてスクリプトを実行する必要があります (既定のサービスを使用していない場合など)。In certain scenarios you might need to run a script as part of starting a debugging session (e.g. when not using Default Services).

Visual Studio では、Service Fabric Application プロジェクト (.sfproj) の Scripts フォルダーに Start-Service.ps1 というファイルを追加できます。In Visual Studio, you can add a file called Start-Service.ps1 in the Scripts folder of the Service Fabric Application project (.sfproj). このスクリプトは、ローカル クラスターでアプリケーションが作成された後に呼び出されます。This script will be invoked after the application has been created in the local cluster.

リモートの Service Fabric アプリケーションをデバッグするDebug a remote Service Fabric application

Service Fabric アプリケーションが Azure 内の Service Fabric クラスター上で実行されている場合は、Visual Studio から直接、これらのアプリケーションをリモートでデバッグできます。If your Service Fabric applications are running on a Service Fabric cluster in Azure, you can remotely debug these applications, directly from Visual Studio.

注意

この機能には Service Fabric SDK 2.0Azure SDK for .NET 2.9 が必要です。The feature requires Service Fabric SDK 2.0 and Azure SDK for .NET 2.9.

警告

リモート デバッグは開発/テスト シナリオ向けであり、運用環境向けではありません。これは、実行中のアプリケーションに影響が生じるためです。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. Cloud Explorer でクラスターに移動します。Navigate to your cluster in Cloud Explorer . 右クリックし、 [デバッグを有効にする] を選択します。Right-click and choose Enable Debugging

    リモート デバッグの有効化

    このアクションにより、クラスター ノード上のリモート デバッグ拡張機能や、必要なネットワーク構成を有効にするプロセスが開始されます。This action will kick off the process of enabling the remote debugging extension on your cluster nodes and required network configurations.

  2. Cloud Explorer でクラスター ノードを右クリックし、 [デバッガーのアタッチ] を選択します。Right-click the cluster node in Cloud Explorer , and choose Attach Debugger

    [デバッガーの接続]

  3. [プロセスにアタッチ] ダイアログ ボックスで、デバッグするプロセスを選択し、 [アタッチ] をクリックします。In the Attach to process dialog, choose the process you want to debug, and click Attach

    プロセスの選択

    アタッチするプロセスの名前は、サービス プロジェクト アセンブリ名と同じ名前です。The name of the process you want to attach to, equals the name of your service project assembly name.

    デバッガーはプロセスを実行するすべてのノードにアタッチされます。The debugger will attach to all nodes running the process.

    • ステートレス サービスをデバッグしている場合は、すべてのノード上のサービスのすべてのインスタンスがデバッグ セッションの一部になります。In the case where you're debugging a stateless service, all instances of the service on all nodes are part of the debug session.

    • ステートフル サービスをデバッグしている場合は、いずれかのパーティションのプライマリ レプリカのみがアクティブになり、そのためデバッガーによってキャッチされます。If you're debugging a stateful service, only the primary replica of any partition will be active and therefore caught by the debugger. デバッグ セッション中にプライマリ レプリカが移動した場合でも、そのレプリカの処理は引き続きデバッグ セッションに含まれます。If the primary replica moves during the debug session, the processing of that replica will still be part of the debug session.

    • 特定のサービスの関連するパーティションまたはインスタンスのみをキャッチするには、条件付きブレークポイントを使用して、特定のパーティションまたはインスタンスのみを中断できます。To only catch relevant partitions or instances of a given service, you can use conditional breakpoints to only break a specific partition or instance.

      条件付きブレークポイント

      注意

      現在、サービスの実行可能ファイル名が同名の複数のインスタンスを持つ Service Fabric クラスターのデバッグはサポートされていません。Currently we do not support debugging a Service Fabric cluster with multiple instances of the same service executable name.

  4. アプリケーションのデバッグが完了したら、 Cloud Explorer でクラスターを右クリックし、 [デバッグの無効化] を選択して、リモート デバッグ拡張機能を無効にできます。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

    リモート デバッグの無効化

リモート クラスター ノードからのストリーミング トレースStreaming traces from a remote cluster node

トレースをリモート クラスター ノードから直接 Visual Studio にストリーミングすることもできます。You're also able to stream traces directly from a remote cluster node to Visual Studio. この機能を使用すると、Service Fabric クラスター ノードで生成された ETW トレース イベントをストリーミングできます。This feature allows you to stream ETW trace events, produced on a Service Fabric cluster node.

注意

この機能には Service Fabric SDK 2.0Azure SDK for .NET 2.9 が必要です。This feature requires Service Fabric SDK 2.0 and Azure SDK for .NET 2.9. この機能は、Azure で実行するクラスターのみをサポートします。This feature only supports clusters running in Azure.

警告

ストリーミング トレースは開発/テスト シナリオ向けであり、運用環境向けではありません。これは、実行中のアプリケーションに影響が生じるためです。Streaming traces is meant for dev/test scenarios and not to be used in production environments, because of the impact on the running applications. 運用環境のシナリオでは、Azure Diagnostics を使用したイベント転送に頼る必要があります。In a production scenario, you should rely on forwarding events using Azure Diagnostics.

  1. Cloud Explorer でクラスターに移動します。Navigate to your cluster in Cloud Explorer . 右クリックし、 [ストリーミング トレースを有効にする] を選択します。Right-click and choose Enable Streaming Traces

    リモートのストリーミング トレースの有効化

    このアクションにより、クラスター ノード上のストリーミング トレース拡張機能や、必要なネットワーク構成を有効にするプロセスが開始されます。This action will kick off the process of enabling the streaming traces extension on your cluster nodes, as well as required network configurations.

  2. Cloud Explorer[ノード] を展開し、ストリーミング トレースを実行するノードを右クリックし、 [ストリーミング トレースを表示する] を選択します。Expand the Nodes element in Cloud Explorer , right-click the node you want to stream traces from and choose View Streaming Traces

    リモートのストリーミング トレースの表示

    トレースを表示するノードの数だけ手順 2. を繰り返します。Repeat step 2 for as many nodes as you want to see traces from. 各ノード ストリームは専用のウィンドウに表示されます。Each nodes stream will show up in a dedicated window.

    これで、サービスと Service Fabric によって出力されるトレースを表示できるようになりました。You are now able to see the traces emitted by Service Fabric, and your services. 特定のアプリケーションのみを表示するようにイベントをフィルター処理する場合は、フィルターにアプリケーション名を入力します。If you want to filter the events to only show a specific application, simply type in the name of the application in the filter.

    ストリーミング トレースの表示

  3. クラスターからのストリーミング トレースが完了したら、リモートのストリーミング トレースを無効化できます。このためには、 Cloud Explorer でクラスターを右クリックし、 [ストリーミング トレースを無効にする] を選択します。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

    リモートのストリーミング トレースの無効化

次のステップNext steps