Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Observação
A depuração de instantâneo foi descontinuada e deixará de estar disponível nas versões mais recentes do Visual Studio 2022 e versões posteriores. Embora não haja uma substituição exata, existem outras ferramentas que podem fornecer diagnósticos úteis:
O Snapshot Debugger captura um instantâneo dos aplicativos em produção quando o código que lhe interessa é executado. Para instruir o depurador a tirar um instantâneo, defina pontos de captura e pontos de registo no seu código. O depurador permite que você veja exatamente o que deu errado, sem afetar o tráfego do seu aplicativo de produção. O Depurador de Snapshot pode ajudá-lo a reduzir drasticamente o tempo necessário para resolver problemas que ocorrem em ambientes de produção.
Os pontos de instantâneo e os pontos de registo são semelhantes aos pontos de interrupção. Contudo, ao contrário dos pontos de interrupção, os pontos de instantâneo não param a aplicação quando são atingidos. Normalmente, a captura de um instantâneo num snappoint leva de 10 a 20 milissegundos.
Neste tutorial, você irá:
- Inicie o depurador de capturas
- Definir um ponto de captura e visualizar um instantâneo
- Definir um ponto de registo
Pré-requisitos
O Depurador de Instantâneo para Máquinas Virtuais (VM) do Azure e Conjuntos de Escala de Máquinas Virtuais do Azure só está disponível para o Visual Studio 2019 Enterprise ou superior com a carga de trabalho 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 Enterprise.
A recolha de instantâneos está disponível para as seguintes aplicações Web de Máquinas Virtuais do Azure\Conjuntos de Dimensionamento de Máquinas Virtuais:
- ASP.NET aplicativos executados no .NET Framework 4.6.1 ou posterior.
- Aplicações ASP.NET Core a correr no .NET Core 2.0 ou posterior em Windows.
Observação
O Visual Studio Enterprise em execução no Windows de 32 bits não poderá exibir instantâneos.
Abra seu projeto e inicie o Depurador de instantâneo
Abra o projeto que você gostaria de depurar instantâneo.
Importante
Para depuração de instantâneo, você precisa abrir a mesma versão do código-fonte que é publicada no serviço Máquina Virtual do Azure\Conjunto de Escala de Máquina Virtual.
Escolha Depurar > Anexar Depurador de Instantâneo.... Selecione a Máquina Virtual do Azure/O Conjunto de Escala da Máquina Virtual no qual o seu aplicativo Web está implantado e uma conta de armazenamento do Azure, e clique em Anexar. O Depurador de Instantâneo também suporta o Serviço Kubernetes do Azure e o Serviço de Aplicativo do Azure.
Importante
Na primeira vez que você selecionar Anexar Depurador de Instantâneo para sua VM, o IIS será reiniciado automaticamente. A primeira vez que você selecionar Anexar Depurador de Instantâneo para seus Conjuntos de Dimensionamento de Máquina Virtual, será necessária a atualização manual de cada instância dos Conjuntos de Dimensionamento de Máquina Virtual.
Observação
(Visual Studio 2019 versão 16.2 e superior) O Depurador de Instantâneo ativou suporte para a nuvem Azure. Certifique-se de que o recurso do Azure e a conta de Armazenamento do Azure selecionada são da mesma nuvem. Entre em contato com o administrador do Azure se tiver dúvidas sobre as configurações de conformidade do Azure da sua empresa.
Os metadados dos Módulos não serão ativados inicialmente, navegue até o aplicativo Web e o botão Iniciar Coleção ficará ativo. O Visual Studio agora está no modo de depuração por instantâneo.
Observação
O utilizador do VMSS deve atualizar manualmente as instâncias nos seus Conjuntos de Escalabilidade de Máquinas Virtuais após anexar o Depurador de Instantâneos pela primeira vez.
A janela Módulos mostra quando todos os módulos foram carregados para a Máquina Virtual do Azure\Conjunto de Escala de Máquina Virtual (escolha Depurar > Módulos do Windows > para abrir esta janela).
Definir um ponto de encaixe
No editor de código, clique na calha lateral ao lado de uma linha de código em que está interessado para definir um snappoint. Certifique-se de que é o código que você sabe que será executado.
Clique em Iniciar Coleção para ativar o snappoint.
Sugestão
Você não pode executar passo a passo ao visualizar um instantâneo, mas pode colocar vários pontos de interrupção no seu código para rastrear a execução em diferentes linhas de código. Se tiver vários pontos de ajuste no seu código, o Depurador de Captura assegura que as capturas correspondentes sejam da mesma sessão de utilizador final. O Depurador de Instantâneo faz isso mesmo se houver muitos usuários acessando seu aplicativo.
Tire uma foto
Depois de definir um ponto de captura, pode gerar manualmente um instantâneo acedendo à vista do navegador do seu site e correndo a linha de código marcada ou aguardar que os utilizadores o gerem através do uso do site.
Inspecionar dados de instantâneo
Quando o ponto de ajuste é atingido, um instantâneo aparece na janela Ferramentas de Diagnóstico. Para abrir esta janela, escolha Depurar > Mostrar Ferramentas de Diagnóstico > do Windows.
Clique duas vezes no ponto de captura para abrir o instantâneo no editor de código.
A partir dessa exibição, você pode passar o mouse sobre variáveis para exibir Dicas de Dados, usar as janelas Locais, Inspeções e Pilha de Chamadas e também avaliar expressões.
O site em si ainda está ativo e os usuários finais não são afetados. Por padrão, apenas um snapshot é capturado por snappoint: depois que um snapshot é capturado, o snappoint é desativado. Se quiser capturar outro instantâneo no ponto de ajuste, pode reativar o ponto de ajuste clicando em Atualizar coleção.
Você também pode adicionar mais pontos de ajuste 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 na sua aplicação, considere usar um ponto de interrupção condicional. Os pontos de ajuste condicionais ajudam 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 acertos.
Para criar um ponto de ajuste condicional
Clique com o botão direito do rato num ícone de snappoint (a esfera oca) e escolha Configurações.
Na janela de configurações do snappoint, digite uma expressão.
Na ilustração anterior, o instantâneo é tirado apenas para o ponto instantâneo quando
visitor.FirstName == "Dan".
Definir um ponto de registo
Além de tirar um instantâneo quando um snappoint é atingido, você também pode configurar um snappoint para registrar uma mensagem (ou seja, criar um ponto de log). Você pode definir pontos de log sem precisar reimplantar seu aplicativo. Os pontos de log são executados virtualmente e não causam impacto ou efeitos colaterais ao seu aplicativo em execução.
Para criar um ponto de log:
Clique com o botão direito do rato num ícone de ponto de encaixe (o hexágono azul) e escolha Configurações.
Na janela de configurações do snappoint, selecione Ações.
No campo Mensagem , você pode inserir a nova mensagem de log que deseja registrar. Você também pode avaliar variáveis em sua mensagem de log colocando-as dentro de chaves encaracoladas.
Se você escolher Enviar para a janela de saída, quando o ponto de log for atingido, a mensagem aparecerá na janela Ferramentas de diagnóstico.
Se você escolher Enviar para o log do aplicativo, quando o ponto de log for atingido, a mensagem aparecerá em qualquer lugar do qual você possa ver mensagens (
System.Diagnostics.TraceouILoggerno .NET Core), como o App Insights.
Conteúdo relacionado
Neste tutorial, aprendeste como utilizar o Snapshot Debugger para Máquinas Virtuais do Azure e Conjuntos de Escala de Máquinas Virtuais do Azure. Você pode querer ler mais detalhes sobre esse recurso.