Depurar seu aplicativo Service Fabric usando o Visual StudioDebug your Service Fabric application by using Visual Studio

Depurar um aplicativo de Service Fabric localDebug a local Service Fabric application

Você pode economizar tempo e dinheiro Implantando e Depurando seu aplicativo de Service Fabric do Azure em um cluster de desenvolvimento de computador local.You can save time and money by deploying and debugging your Azure Service Fabric application in a local computer development cluster. O Visual Studio 2019 ou 2015 pode implantar o aplicativo no cluster local e conectar automaticamente o depurador a todas as instâncias do seu aplicativo.Visual Studio 2019 or 2015 can deploy the application to the local cluster and automatically connect the debugger to all instances of your application. O Visual Studio deve ser executado como administrador para conectar o depurador.Visual Studio's must be run as Administrator to connect the debugger.

  1. Inicie um cluster de desenvolvimento local seguindo as etapas em configurando seu ambiente de desenvolvimento de Service Fabric.Start a local development cluster by following the steps in Setting up your Service Fabric development environment.

  2. Pressione F5 ou clique em depurar > Iniciar Depuração.Press F5 or click Debug > Start Debugging.

    Iniciar a depuração de um aplicativo

  3. Defina pontos de interrupção em seu código e percorra o aplicativo clicando em comandos no menu depurar .Set breakpoints in your code and step through the application by clicking commands in the Debug menu.

    Nota

    O Visual Studio é anexado a todas as instâncias do seu aplicativo.Visual Studio attaches to all instances of your application. Enquanto você está percorrendo o código, os pontos de interrupção podem ser atingidos por vários processos, resultando em sessões simultâneas.While you're stepping through code, breakpoints may get hit by multiple processes resulting in concurrent sessions. Tente desabilitar os pontos de interrupção depois que eles forem atingidos, tornando cada ponto de interrupção condicional na ID do thread ou usando eventos de diagnóstico.Try disabling the breakpoints after they're hit, by making each breakpoint conditional on the thread ID or by using diagnostic events.

  4. A janela eventos de diagnóstico será aberta automaticamente para que você possa exibir eventos de diagnóstico em tempo real.The Diagnostic Events window will automatically open so you can view diagnostic events in real time.

    Exibir eventos de diagnóstico em tempo real

  5. Você também pode abrir a janela eventos de diagnóstico no Cloud Explorer.You can also open the Diagnostic Events window in Cloud Explorer. Em Service Fabric, clique com o botão direito do mouse em qualquer nó e escolha Exibir rastreamentos de streaming.Under Service Fabric, right-click any node and choose View Streaming Traces.

    Abrir a janela eventos de diagnóstico

    Se você quiser filtrar os rastreamentos para um serviço ou aplicativo específico, habilite os rastreamentos de streaming nesse serviço ou aplicativo específico.If you want to filter your traces to a specific service or application, enable streaming traces on that specific service or application.

  6. Os eventos de diagnóstico podem ser vistos no arquivo ServiceEventSource.cs gerado automaticamente e são chamados do código do aplicativo.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. A janela eventos de diagnóstico dá suporte à filtragem, pausa e inspeção de eventos em tempo real.The Diagnostic Events window supports filtering, pausing, and inspecting events in real time. O filtro é uma pesquisa de cadeia de caracteres simples da mensagem de evento, incluindo seu conteúdo.The filter is a simple string search of the event message, including its contents.

    Filtrar, pausar e retomar ou inspecionar eventos em tempo real

  8. Os serviços de depuração são como a depuração de qualquer outro aplicativo.Debugging services is like debugging any other application. Normalmente, você definirá pontos de interrupção por meio do Visual Studio para fácil depuração.You'll normally set Breakpoints through Visual Studio for easy debugging. Embora as coleções confiáveis repliquem em vários nós, elas ainda implementam IEnumerable.Even though Reliable Collections replicate across multiple nodes, they still implement IEnumerable. Essa implementação significa que você pode usar a exibição de resultados no Visual Studio enquanto depura para ver o que você armazenou dentro.This implementation means that you can use the Results View in Visual Studio while you debug to see what you've stored inside. Para fazer isso, defina um ponto de interrupção em qualquer lugar no seu código.To do so, set a breakpoint anywhere in your code.

    Iniciar a depuração de um aplicativo

Executando um script como parte da depuraçãoRunning a script as part of debugging

Em determinados cenários, talvez seja necessário executar um script como parte do início de uma sessão de depuração (por exemplo, quando não estiver usando serviços padrão).In certain scenarios you might need to run a script as part of starting a debugging session (e.g. when not using Default Services).

No Visual Studio, você pode adicionar um arquivo chamado Start-Service. ps1 na pasta scripts do projeto de aplicativo Service Fabric (. sfproj).In Visual Studio, you can add a file called Start-Service.ps1 in the Scripts folder of the Service Fabric Application project (.sfproj). Esse script será invocado depois que o aplicativo tiver sido criado no cluster local.This script will be invoked after the application has been created in the local cluster.

Depurar um aplicativo de Service Fabric remotoDebug a remote Service Fabric application

Se seus aplicativos Service Fabric estiverem em execução em um Cluster Service Fabric no Azure, você poderá depurar esses aplicativos remotamente, diretamente do 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.

Aviso

A depuração remota destina-se a cenários de desenvolvimento/teste e não a ser usada em ambientes de produção, devido ao impacto nos aplicativos em execução.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. Navegue até o cluster no Cloud Explorer.Navigate to your cluster in Cloud Explorer. Clique com o botão direito do mouse e escolha Habilitar depuraçãoRight-click and choose Enable Debugging

    Habilitar depuração remota

    Essa ação iniciará o processo de habilitar a extensão de depuração remota em seus nós de cluster e as configurações de rede necessárias.This action will kick off the process of enabling the remote debugging extension on your cluster nodes and required network configurations.

  2. Clique com o botão direito do mouse no nó de cluster no Cloud Explorere escolha anexar depuradorRight-click the cluster node in Cloud Explorer, and choose Attach Debugger

    Anexar depurador

  3. Na caixa de diálogo anexar ao processo , escolha o processo que você deseja depurar e clique em anexarIn the Attach to process dialog, choose the process you want to debug, and click Attach

    Escolher processo

    O nome do processo ao qual você deseja anexar é igual ao nome do seu nome de assembly do projeto de serviço.The name of the process you want to attach to, equals the name of your service project assembly name.

    O depurador será anexado a todos os nós que executam o processo.The debugger will attach to all nodes running the process.

    • No caso em que você está depurando um serviço sem estado, todas as instâncias do serviço em todos os nós fazem parte da sessão de depuração.In the case where you're debugging a stateless service, all instances of the service on all nodes are part of the debug session.

    • Se você estiver depurando um serviço com estado, somente a réplica primária de qualquer partição estará ativa e, portanto, capturada pelo depurador.If you're debugging a stateful service, only the primary replica of any partition will be active and therefore caught by the debugger. Se a réplica primária for movida durante a sessão de depuração, o processamento dessa réplica ainda fará parte da sessão de depuração.If the primary replica moves during the debug session, the processing of that replica will still be part of the debug session.

    • Para capturar apenas as partições ou instâncias relevantes de um determinado serviço, você pode usar pontos de interrupção condicionais para interromper apenas uma partição ou instância específica.To only catch relevant partitions or instances of a given service, you can use conditional breakpoints to only break a specific partition or instance.

      Ponto de interrupção condicional

      Nota

      No momento, não há suporte para a depuração de um Cluster Service Fabric com várias instâncias do mesmo nome do executável do serviço.Currently we do not support debugging a Service Fabric cluster with multiple instances of the same service executable name.

  4. Depois de concluir a depuração do aplicativo, você pode desabilitar a extensão de depuração remota clicando com o botão direito do mouse no cluster no Cloud Explorer e escolhendo Desabilitar depuraçãoOnce you finish debugging your application, you can disable the remote debugging extension by right-clicking the cluster in Cloud Explorer and choose Disable Debugging

    Desabilitar depuração remota

Streaming de rastreamentos de um nó de cluster remotoStreaming traces from a remote cluster node

Você também é capaz de transmitir rastreamentos diretamente de um nó de cluster remoto para o Visual Studio.You're also able to stream traces directly from a remote cluster node to Visual Studio. Esse recurso permite que você transmita eventos de rastreamento ETW, produzidos em um nó de Cluster Service Fabric.This feature allows you to stream ETW trace events, produced on a Service Fabric cluster node.

Nota

Este recurso requer Service Fabric sdk 2,0 e SDK do Azure para .NET 2,9.This feature requires Service Fabric SDK 2.0 and Azure SDK for .NET 2.9. Esse recurso só dá suporte a clusters em execução no Azure.This feature only supports clusters running in Azure.

Aviso

Os rastreamentos de streaming destinam-se a cenários de desenvolvimento/teste e não a serem usados em ambientes de produção, devido ao impacto nos aplicativos em execução.Streaming traces is meant for dev/test scenarios and not to be used in production environments, because of the impact on the running applications. Em um cenário de produção, você deve contar com o encaminhamento de eventos usando Diagnóstico do Azure.In a production scenario, you should rely on forwarding events using Azure Diagnostics.

  1. Navegue até o cluster no Cloud Explorer.Navigate to your cluster in Cloud Explorer. Clique com o botão direito do mouse e escolha habilitar rastreamentos de streamingRight-click and choose Enable Streaming Traces

    Habilitar rastreamentos de streaming remoto

    Essa ação iniciará o processo de habilitar a extensão de rastreamentos de streaming em seus nós de cluster, bem como as configurações de rede necessárias.This action will kick off the process of enabling the streaming traces extension on your cluster nodes, as well as required network configurations.

  2. Expanda o elemento nós no Cloud Explorer, clique com o botão direito do mouse no nó do qual você deseja transmitir rastreamentos e escolha Exibir rastreamentos de streamingExpand the Nodes element in Cloud Explorer, right-click the node you want to stream traces from and choose View Streaming Traces

    Exibir rastreamentos de streaming remoto

    Repita a etapa 2 para quantos nós desejar ver os rastreamentos.Repeat step 2 for as many nodes as you want to see traces from. Cada fluxo de nós aparecerá em uma janela dedicada.Each nodes stream will show up in a dedicated window.

    Agora você pode ver os rastreamentos emitidos por Service Fabric e seus serviços.You are now able to see the traces emitted by Service Fabric, and your services. Se você quiser filtrar os eventos para mostrar apenas um aplicativo específico, basta digitar o nome do aplicativo no filtro.If you want to filter the events to only show a specific application, simply type in the name of the application in the filter.

    Exibindo rastreamentos de streaming

  3. Depois de concluir os rastreamentos de streaming do cluster, você poderá desabilitar os rastreamentos de streaming remoto clicando com o botão direito do mouse no cluster no Cloud Explorer e escolhendo desabilitar rastreamentos de streamingOnce 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

    Desabilitar rastreamentos de streaming remoto

Passos seguintesNext steps