Depurar a sua aplicação do Service Fabric com o Visual Studio

Depurar uma aplicação do Service Fabric local

Importante

A depuração remota não é suportada no VS 2022

Pode poupar tempo e dinheiro ao implementar e depurar a sua aplicação do Azure Service Fabric num cluster de desenvolvimento de computadores local. O Visual Studio 2019 ou 2015 pode implementar a aplicação no cluster local e ligar automaticamente o depurador a todas as instâncias da sua aplicação. O Visual Studio tem de ser executado como Administrador para ligar o depurador.

  1. Inicie um cluster de desenvolvimento local ao seguir os passos em Configurar o seu ambiente de desenvolvimento do Service Fabric.

  2. Prima F5 ou clique em Depurar>Iniciar Depuração.

    Captura de ecrã que mostra o menu Depurar.

  3. Defina pontos de interrupção no seu código e percorra a aplicação ao clicar em comandos no menu Depurar .

    Nota

    O Visual Studio anexa-se a todas as instâncias da sua aplicação. Enquanto está a seguir o código, os pontos de interrupção podem ser atingidos por vários processos, resultando em sessões simultâneas. Experimente desativar os pontos de interrupção depois de serem atingidos, ao tornar cada ponto de interrupção condicional no ID do thread ou através de eventos de diagnóstico.

  4. A janela Eventos de Diagnóstico será aberta automaticamente para que possa ver eventos de diagnóstico em tempo real.

    Ver eventos de diagnóstico em tempo real

  5. Também pode abrir a janela Eventos de Diagnóstico no Cloud Explorer. Em Service Fabric, clique com o botão direito do rato em qualquer nó e selecione Ver Rastreios de Transmissão em Fluxo.

    Abrir a janela de eventos de diagnóstico

    Se quiser filtrar os seus rastreios para um serviço ou aplicação específico, ative os rastreios de transmissão em fluxo nesse serviço ou aplicação específico.

  6. Os eventos de diagnóstico podem ser vistos no ficheiro ServiceEventSource.cs gerado automaticamente e são chamados a partir do código da aplicação.

    ServiceEventSource.Current.ServiceMessage(this, "My ServiceMessage with a parameter {0}", result.Value.ToString());
    
  7. A janela Eventos de Diagnóstico suporta eventos de filtragem, pausa e inspeção em tempo real. O filtro é uma simples pesquisa de cadeia da mensagem de evento, incluindo o respetivo conteúdo.

    Filtrar, colocar em pausa e retomar ou inspecionar eventos em tempo real

  8. A depuração de serviços é como depurar qualquer outra aplicação. Normalmente, irá definir Pontos de interrupção através do Visual Studio para facilitar a depuração. Apesar de as Coleções Fiáveis serem replicadas em vários nós, continuam a implementar IEnumerable. Esta implementação significa que pode utilizar a Vista de Resultados no Visual Studio enquanto depura para ver o que armazenou no seu interior. Para tal, defina um ponto de interrupção em qualquer parte do seu código.

    Iniciar a depuração de uma aplicação

Executar um script como parte da depuração

Em determinados cenários, poderá ter de executar um script como parte do início de uma sessão de depuração (por exemplo, quando não estiver a utilizar os Serviços Predefinidos).

No Visual Studio, pode adicionar um ficheiro chamado Start-Service.ps1 na pasta Scripts do projeto da Aplicação do Service Fabric (.sfproj). Este script será invocado depois de a aplicação ter sido criada no cluster local.

Depurar uma aplicação remota do Service Fabric

Se as suas aplicações do Service Fabric estiverem em execução num cluster do Service Fabric no Azure, pode depurar remotamente estas aplicações diretamente a partir do Visual Studio.

Nota

A funcionalidade requer o SDK do Service Fabric 2.0 e o SDK do Azure para .NET 2.9.

Aviso

A depuração remota destina-se a cenários de desenvolvimento/teste e não a ser utilizada em ambientes de produção, devido ao impacto nas aplicações em execução.

  1. Navegue para o cluster no Cloud Explorer. Clique com o botão direito do rato e selecione Ativar Depuração

    Ativar a depuração remota

    Esta ação irá iniciar o processo de ativação da extensão de depuração remota nos nós de cluster e das configurações de rede necessárias.

  2. Clique com o botão direito do rato no nó de cluster no Cloud Explorer e selecione Anexar Depurador

    Anexar depurador

  3. Na caixa de diálogo Anexar ao processo , selecione o processo que pretende depurar e clique em Anexar

    Escolher processo

    O nome do processo ao qual pretende anexar é igual ao nome da assemblagem do projeto de serviço.

    O depurador será anexado a todos os nós que executam o processo.

    • No caso de estar a depurar 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.

    • Se estiver a depurar um serviço com estado, apenas a réplica primária de qualquer partição estará ativa e, por conseguinte, apanhada pelo depurador. Se a réplica primária se mover durante a sessão de depuração, o processamento dessa réplica continuará a fazer parte da sessão de depuração.

    • Para capturar apenas partições ou instâncias relevantes de um determinado serviço, pode utilizar pontos de interrupção condicionais para apenas quebrar uma partição ou instância específica.

      Ponto de interrupção condicional

      Nota

      Atualmente, não suportamos a depuração de um cluster do Service Fabric com várias instâncias do mesmo nome executável do serviço.

  4. Depois de concluir a depuração da aplicação, pode desativar a extensão de depuração remota ao clicar com o botão direito do rato no cluster no Cloud Explorer e selecionar Desativar Depuração

    Desativar a depuração remota

Transmissão em fluxo de rastreios a partir de um nó de cluster remoto

Também pode transmitir rastreios diretamente a partir de um nó de cluster remoto para o Visual Studio. Esta funcionalidade permite-lhe transmitir eventos de rastreio ETW, produzidos num nó de cluster do Service Fabric.

Nota

Esta funcionalidade requer o SDK do Service Fabric 2.0 e o SDK do Azure para .NET 2.9. Esta funcionalidade só suporta clusters em execução no Azure.

Aviso

Os rastreios de transmissão em fluxo destinam-se a cenários de desenvolvimento/teste e não a serem utilizados em ambientes de produção, devido ao impacto nas aplicações em execução. Num cenário de produção, deve depender do reencaminhamento de eventos com Diagnóstico do Azure.

  1. Navegue para o cluster no Cloud Explorer. Clique com o botão direito do rato e selecione Ativar Rastreios de Transmissão em Fluxo

    Ativar rastreios de transmissão remota

    Esta ação irá iniciar o processo de ativação da extensão de rastreios de transmissão em fluxo nos nós de cluster, bem como das configurações de rede necessárias.

  2. Expanda o elemento Nós no Cloud Explorer, clique com o botão direito do rato no nó a partir do qual pretende transmitir rastreios e selecione Ver Rastreios de Transmissão em Fluxo

    Ver rastreios de transmissão remota

    Repita o passo 2 para o número de nós a partir dos quais pretende ver rastreios. Cada fluxo de nós será apresentado numa janela dedicada.

    Agora, pode ver os rastreios emitidos pelo Service Fabric e os seus serviços. Se quiser filtrar os eventos para mostrar apenas uma aplicação específica, basta escrever o nome da aplicação no filtro.

    Ver rastreios de transmissão em fluxo

  3. Assim que terminar a transmissão em fluxo de rastreios do cluster, pode desativar os rastreios de transmissão remota, clicando com o botão direito do rato no cluster no Cloud Explorer e selecionando Desativar Rastreios de Transmissão em Fluxo

    Desativar rastreios de transmissão remota

Passos seguintes