Compartilhar via


Depurar aplicativos ASP.NET do Azure em tempo real usando o Snapshot Debugger

O Depurador de Instantâneos tira um instantâneo de seus aplicativos em produção quando o código em que você está interessado é executado. Para instruir o depurador a tirar um instantâneo, defina snappoints e logpoints em seu código. O depurador permite que você veja exatamente o que deu errado, sem afetar o tráfego do aplicativo de produção. O Snapshot Debugger pode ajudá-lo a reduzir drasticamente o tempo necessário para resolver problemas que ocorrem em ambientes de produção.

Snappoints e logpoints são semelhantes aos pontos de interrupção. Porém, ao contrário dos pontos de interrupção, os snappoints não interrompem o aplicativo quando atingidos. Normalmente, capturar um instantâneo em um snappoint (ponto de captura) leva de 10 a 20 milissegundos.

Neste tutorial, você irá:

  • Iniciar o Depurador de Instantâneos
  • Definir um ponto de captura e visualizar um instantâneo
  • Definir um ponto de log

Pré-requisitos

  • O Snapshot Debugger só está disponível a partir do Visual Studio 2017 Enterprise versão 15.5 ou superior com o workload de desenvolvimento do Azure. (Na guia Componentes individuais , você o encontra em Depuração e teste>Depurador de instantâneo.)

    Se ainda não estiver instalado, instale o Visual Studio 2019. Se você estiver atualizando de uma instalação anterior do Visual Studio, execute o Instalador do Visual Studio e verifique o componente Snapshot Debugger na carga de trabalho de desenvolvimento do ASP.NET e da web.

  • Plano básico ou superior do Serviço de Aplicativo do Azure.

  • A coleção de instantâneos está disponível para os seguintes aplicativos Web em execução no Serviço de Aplicativo do Azure:

    • ASP.NET aplicativos em execução no .NET Framework 4.6.1 ou posterior.
    • ASP.NET Core aplicativos em execução no .NET Core 2.0 ou posterior no Windows.

Abra seu projeto e inicie o Depurador de Instantâneos

  1. Abra o projeto que você deseja depurar por instantâneo.

    Importante

    Para depurar o instantâneo, você precisa abrir a mesma versão do código-fonte publicada no Serviço de Aplicativo do Azure.

  2. Escolha Depurar Depurador de Captura Instantânea>.... Selecione o Serviço de Aplicativos do Azure no qual seu projeto foi implantado e uma conta de armazenamento do Azure e clique em Anexar. O Depurador de Instantâneos também dá suporte ao Serviço de Kubernetes do Azure e às Máquinas Virtuais do Azure e Conjuntos de Dimensionamento de Máquinas Virtuais.

    Iniciar o depurador de instantâneo a partir do menu Depurar

    Selecionar Recurso do Azure

    Importante

    Na primeira vez que você selecionar Anexar Depurador de Instantâneos, será solicitado que você instale a extensão do site do Depurador de Instantâneos no Serviço de Aplicativo do Azure. Essa instalação requer uma reinicialização do Serviço de Aplicativo do Azure.

    Observação

    (Visual Studio 2019 versão 16.2 e superior) O Depurador de Instantâneos habilitou o suporte à nuvem do Azure. Verifique se o recurso do Azure e a conta de Armazenamento do Azure selecionada estão na mesma nuvem. Entre em contato com o administrador do Azure se você tiver dúvidas sobre as configurações de conformidade do Azure da sua empresa.

    O Visual Studio agora está no modo de depuração de instantâneos. Modo de depuração de captura instantânea

    A janela Módulos mostra quando todos os módulos foram carregados para o Serviço de Aplicativo do Azure (escolha Depurar > Módulos do Windows > para abrir esta janela).

    Verifique a janela de módulos

Definir um snappoint

  1. No editor de código, clique na sarjeta esquerda ao lado de uma linha de código na qual você está interessado em definir um snappoint. Verifique se é o código que você sabe que será executado.

    Definir um snappoint

  2. Clique em Iniciar Coleção para ativar o snappoint.

    Ativar o ponto de ajuste

    Dica

    Você não pode intervir ao exibir um instantâneo, mas pode colocar vários snappoints em seu código para seguir a execução em diferentes linhas de código. Se você tiver vários snappoints em seu código, o Depurador de Snapshots garantirá que os snapshots correspondentes sejam da mesma sessão do usuário final. O Depurador de Instantâneos faz isso mesmo se houver muitos usuários utilizando seu aplicativo.

Tirar um instantâneo

Depois que um ponto de captura é definido, você pode gerar manualmente um instantâneo acessando a visualização do navegador do seu site e executando a linha de código marcada ou aguardar que os usuários gerem um a partir do uso do site.

Inspecionar dados de instantâneo

  1. Quando o snappoint é atingido, uma captura de tela aparece na janela Ferramentas de Diagnóstico. Para abrir essa janela, escolha Depurar > Ferramentas de Diagnóstico do Windows > Show.

    Abrir um snappoint

  2. Clique duas vezes no snappoint para abrir o instantâneo no editor de código.

    Inspecionar dados de instantâneo

    Nesse modo de exibição, você pode passar o mouse sobre variáveis para exibir Dicas de Dados, usar as janelas Locais, Relógios e Pilha de Chamadas e também avaliar expressões.

    O próprio site ainda está ativo e os usuários finais não são afetados. Apenas um instantâneo é capturado por snappoint; por padrão, após a captura de um instantâneo, o snappoint é automaticamente desativado. Se você quiser capturar outro instantâneo no snappoint, poderá ativar o snappoint novamente clicando em Atualizar Coleção.

Você também pode adicionar mais snappoints ao seu aplicativo e ativá-los com o botão Atualizar Coleção .

Precisa de ajuda? Consulte as páginas de Resolução de problemas e questões conhecidas e perguntas frequentes sobre depuração de instantâneos.

Definir um ponto de interrupção condicional

Se for difícil recriar um estado específico em seu aplicativo, considere usar um snappoint condicional. Os snappoints condicionais ajudam você a controlar quando tirar um instantâneo, como quando uma variável contém um valor específico que você deseja inspecionar. Você pode definir condições usando expressões, filtros ou contagens de ocorrências.

Para criar um snappoint condicional

  1. Clique com o botão direito do mouse em um ícone de snappoint (a esfera oca) e escolha Configurações.

    Escolher Configurações

  2. Na janela de configurações do snappoint, digite uma expressão.

    Digite uma expressão

    Na ilustração anterior, o instantâneo só é tirado para o snappoint quando visitor.FirstName == "Dan".

Definir um ponto de log

Além de fazer uma captura de imagem quando um snappoint é atingido, você também pode configurar um snappoint para registrar uma mensagem (ou seja, criar um logpoint). Você pode definir pontos de log sem precisar reimplantar seu aplicativo. Os logpoints são executados virtualmente e não causam impacto ou efeitos colaterais ao aplicativo em execução.

Para criar um ponto de log

  1. Clique com o botão direito do mouse em um ícone de snappoint (o hexágono azul) e escolha Configurações.

  2. Na janela de configurações do snappoint, selecione Ações.

    Criar um ponto de registro

  3. No campo Mensagem , você pode inserir a nova mensagem de log que deseja registrar. Você pode também avaliar variáveis na sua mensagem de log, colocando-as dentro de chaves.

    Se você escolher Enviar para a Janela de Saída, quando o ponto de log for atingido, a mensagem será exibida na janela Ferramentas de Diagnóstico.

    Dados do Logpoint na janela de Ferramentas de Diagnóstico

    Se você escolher Enviar para o log do aplicativo, quando o logpoint for atingido, a mensagem aparecerá em qualquer lugar onde você possa ver mensagens de System.Diagnostics.Trace (ou de ILogger no .NET Core), como no App Insights.

Neste tutorial, você aprendeu a usar o Depurador de Instantâneos para Serviços de Aplicativos. Talvez você queira ler mais detalhes sobre esse recurso.