Depurar Serviços de Kubernetes do Azure dinâmicos usando o Depurador de Instantâneos
O Depurador de Instantâneos tira um instantâneo de seus aplicativos em produção quando o código no qual você está interessado é executado. Para instruir o depurador a tirar um instantâneo, defina snappoints e logpoints em seu código. O depurador permite ver exatamente o que deu errado sem afetar o tráfego do seu aplicativo de produção. O Depurador de Instantâneo pode ajudar a reduzir drasticamente o tempo que leva 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, a captura de um instantâneo em um snappoint leva 10 a 20 milissegundos.
Neste tutorial, você irá:
- Iniciar o Depurador de Instantâneos
- Definir um snappoint e exibir um instantâneo
- Definir um logpoint
Pré-requisitos
O Depurador de Instantâneos para Serviços de Kubernetes do Azure só está disponível para o Visual Studio 2019 Enterprise ou posterior, com a carga de trabalho de desenvolvimento do Azure. (Na guia Componentes individuais,é possível encontrá-lo em Depuração e testes>Depurador de instantâneos).
Se ainda não estiver instalado, instale o Visual Studio Enterprise 2019.
A coleção de instantâneos está disponível para os seguintes aplicativos Web dos Serviços de Kubernetes do Azure:
Aplicativos ASP.NET Core em execução no .NET Core 2.2 ou posterior no Debian 9.
Aplicativos ASP.NET Core em execução no .NET Core 2.2 ou posterior no Alpine 3.8.
Aplicativos ASP.NET Core em execução no .NET Core 2.2 ou posterior no Ubuntu 18.04.
Observação
Para ajudar você a habilitar o suporte para o Depurador de Instantâneos no AKS, fornecemos um repositório que contém um conjunto de Dockerfiles que demonstram a configuração em imagens do Docker.
Abra seu projeto e iniciar o Depurador de Instantâneos
Abra o projeto em que você gostaria de fazer a depuração de instantâneos.
Importante
Para realizar a depuração de instantâneos, você precisará abrir a mesma versão do código-fonte publicado no seu serviço de Kubernetes do Azure.
Escolha Depurar > Anexar o Depurador de Instantâneos.... Selecione o recurso AKS no qual seu aplicativo Web está implantado e uma conta de armazenamento do Azure e, em seguida, clique em Anexar. O Depurador de Instantâneos também dá suporte ao Serviço de Aplicativo do Azure e a VMs (Máquinas Virtuais) do Azure e Conjuntos de Dimensionamento de Máquinas Virtuais.
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 Microsoft 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 de sua empresa.
O Visual Studio agora está no modo de depuração de instantâneos.
A janela Módulos mostra quando todos os módulos foram carregados no Serviço de Aplicativo do Azure (escolha Depurar > Windows > Módulos para abrir essa janela).
Definir um snappoint
No editor de código, clique na medianiz esquerda ao lado de uma linha de código de seu interesse para definir um snappoint. Verifique se esse é o código que você sabe que será executado.
Clique em Iniciar Coleção para ativar o snappoint.
Dica
Não é possível depurar ao exibir um instantâneo, mas você 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 Instantâneos garantirá que os instantâneos correspondentes sejam da mesma sessão do usuário final. O Depurador de Instantâneos fará isso mesmo se houver muitos usuários acessando seu aplicativo.
Tirar um instantâneo
Após um snappoint ser definido, você pode gerar manualmente um instantâneo acessando a exibição do navegador de seu site e executando a linha de código marcada ou aguardando que os usuários gerem um a partir do uso do site.
Inspecionar dados de instantâneo
Quando o snappoint for atingido, um instantâneo será exibido na janela de Ferramentas de Diagnóstico. Para abrir essa janela, escolha Depurar > Janelas > Mostrar Ferramentas de Diagnóstico.
Clique duas vezes o snappoint para abrir o instantâneo no editor de códigos.
Nessa exibição, você pode passar o mouse sobre as variáveis para exibir DataTips; use as janelas Locais, Inspeções e Pilha de Chamadas e também avalie expressões.
O site em si ainda fica 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 é 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 Solução de problemas e problemas conhecidos e Perguntas frequentes sobre depuração de instantâneo.
Definir um snappoint condicional
Se tiver dificuldades para recriar um estado específico no aplicativo, considere usar um snappoint condicional. Os snappoints condicionais ajudam a controlar quando fazer um instantâneo, por exemplo, quando uma variável contém um valor específico que você deseja inspecionar. É possível definir condições usando expressões, filtros ou contagens de ocorrências.
Para criar um snappoint condicional
Clique com o botão direito do mouse em um ícone de snappoint (a esfera vazada) e escolha Configurações.
Na janela de configurações de snappoint, digite uma expressão.
Na ilustração anterior, o instantâneo é criado para o snappoint somente quando
visitor.FirstName == "Dan"
.
Definir um logpoint
Além de tirar um instantâneo quando um snappoint é atingido, também é possível configurar um snappoint para registrar uma mensagem em log (ou seja, criar um logpoint). Você pode definir logpoints sem a necessidade de reimplantar o aplicativo. Logpoints são executados virtualmente e não causam impacto ou efeitos colaterais ao seu aplicativo em execução.
Para criar um logpoint
Clique com o botão direito em um ícone de snappoint (o hexágono azul) e escolha Configurações.
Na janela de configurações de snappoint, selecione Ações.
No campo Mensagem, você pode inserir a nova mensagem de log para registrar em log. Você também pode avaliar variáveis na sua mensagem de log colocando-as entre chaves.
Se você escolher Enviar para a Janela de Saída, quando o logpoint for atingido, a mensagem será exibida na janela de Ferramentas de Diagnóstico.
Se você escolher Enviar para log do aplicativo, quando o logpoint for atingido, a mensagem será exibida em qualquer lugar em que você possa ver mensagens de
System.Diagnostics.Trace
(ouILogger
no .NET Core), como App Insights.
Conteúdo relacionado
Neste tutorial, você aprendeu como usar o Depurador de Instantâneos para os Kubernetes do Azure. Talvez você queira ler mais detalhes sobre esse recurso.