Partilhar via


Exceções de depuração em aplicativos .NET usando o Depurador de Instantâneo

Quando habilitado, o Depurador de Instantâneo coleta automaticamente um instantâneo de depuração do código-fonte e das variáveis quando ocorre uma exceção em seu aplicativo .NET ativo. O depurador de instantâneo no Application Insights:

  • Monitoriza os registos gerados pelo sistema a partir da sua aplicação Web.
  • Coleta instantâneos em suas exceções de lançamento superior.
  • Fornece as informações necessárias para diagnosticar problemas na produção.

Saiba mais sobre os processos do Depurador de Instantâneos e do Carregador de Instantâneos.

Aplicações e ambientes suportados

Esta seção lista os aplicativos e ambientes suportados.

Aplicações

A coleta de instantâneos está disponível para:

Ambientes

Os seguintes ambientes são suportados:

Nota

Não há suporte para aplicativos cliente (por exemplo, WPF, Windows Forms ou UWP).

Pré-requisitos para usar o Depurador de Instantâneo

Pacotes e configurações

Permissões

  • Verifique se você foi adicionado à função de Depurador de Instantâneo do Application Insights para o Instantâneo do Application Insights de destino.

Como funciona o Depurador de Instantâneo

O Depurador de Instantâneo é implementado como um processador de telemetria do Application Insights. Quando o aplicativo é executado, o processador de telemetria do Depurador de Instantâneo é adicionado ao pipeline de logs gerados pelo sistema do aplicativo.

Importante

Os instantâneos podem conter dados pessoais ou outras informações confidenciais em valores variáveis e de parâmetros. Os dados de instantâneo são armazenados na mesma região que o recurso do Application Insights.

Processo do depurador de instantâneo

O processo do Depurador de Instantâneo começa e termina com o TrackException método. Um instantâneo do processo é um clone suspenso do processo em execução, para que os usuários experimentem pouca ou nenhuma interrupção. Em um cenário típico:

  1. Seu aplicativo lança o TrackExceptionarquivo .

  2. O Depurador de Instantâneo monitora as exceções à medida que elas são lançadas ao assinar o AppDomain.CurrentDomain.FirstChanceException evento.

  3. Um contador é incrementado para a ID do problema.

    • Quando o contador atinge o ThresholdForSnapshotting valor, a ID do problema é adicionada a um plano de coleta.

    Nota

    O ThresholdForSnapshotting valor mínimo padrão é 1. Com esse valor, seu aplicativo precisa acionar a mesma exceção duas vezes antes que um instantâneo seja criado.

  4. A ID do problema do evento de exceção é calculada e comparada com as IDs do problema no plano de coleta.

  5. Se houver uma correspondência entre IDs de problema, um instantâneo do processo em execução será criado.

    • O instantâneo recebe um identificador exclusivo e a exceção é carimbada com esse identificador.

    Nota

    A taxa de criação de SnapshotsPerTenMinutesLimit instantâneos é limitada pela configuração. Por padrão, o limite é de um instantâneo a cada 10 minutos.

  6. Depois que o FirstChanceException manipulador retorna, a exceção lançada é processada normalmente.

  7. A exceção atinge o TrackException método novamente e é relatada ao Application Insights, juntamente com o identificador de instantâneo.

Nota

Defina IsEnabledInDeveloperMode como true se você deseja gerar instantâneos enquanto depura no Visual Studio.

Processo do Snapshot Uploader

Enquanto o processo do Depurador de Instantâneo continua a ser executado e a fornecer tráfego aos usuários com pouca interrupção, o instantâneo é entregue ao processo do Snapshot Uploader. Em um cenário típico, o Snapshot Uploader:

  1. Cria um minidump.

  2. Carrega o minidump para o Application Insights, juntamente com qualquer arquivo de símbolo relevante (.pdb).

Nota

Não podem ser carregados mais de 50 instantâneos por dia.

Se você ativou o Depurador de Instantâneos, mas não está vendo instantâneos, consulte o Guia de solução de problemas.

Atualizando o depurador de instantâneo

O Depurador de Instantâneo atualiza automaticamente por meio da extensão de site integrada e pré-instalada do Application Insights.

A adição manual de uma extensão de site do Application Insights para manter o Depurador de Instantâneo atualizado foi preterida.

Tolerância

O Depurador de Snapshot foi projetado para uso em ambientes de produção. As configurações padrão incluem limites de taxa para minimizar o impacto em seus aplicativos.

No entanto, você pode enfrentar uma pequena sobrecarga de CPU, memória e E/S associada ao Depurador de Instantâneo, como:

  • Quando uma exceção é lançada em seu aplicativo
  • Se o manipulador de exceções decidir criar um instantâneo
  • Quando TrackException é chamado

Não há custo adicional para armazenar dados capturados pelo Depurador de Instantâneo.

Veja exemplos de cenários nos quais você pode enfrentar a sobrecarga do Depurador de Instantâneo.

Limitações

Esta seção discute as limitações do Depurador de Instantâneo.

  • Retenção de dados

    Os instantâneos de depuração são armazenados por 15 dias. A política de retenção de dados padrão é definida por aplicativo. Se precisar aumentar esse valor, você pode solicitar um aumento abrindo um caso de suporte no portal do Azure. Para cada instância do Application Insights, um número máximo de 50 snapshots é permitido por dia.

  • Publicar símbolos

    O Depurador de instantâneo requer arquivos de símbolo no servidor de produção para:

    • Decodificar variáveis
    • Fornecer uma experiência de depuração no Visual Studio

    Por padrão, o Visual Studio 2017 versões 15.2+ publica símbolos para compilações de versão quando publica no Serviço de Aplicativo.

    Em versões anteriores, você deve adicionar a seguinte linha ao seu arquivo de perfil .pubxml de publicação para que os símbolos sejam publicados no modo de versão:

         <ExcludeGeneratedDebugSymbol>False</ExcludeGeneratedDebugSymbol>
    

    Para o Azure Compute e outros tipos, certifique-se de que os arquivos de símbolo são:

    • Na mesma pasta do aplicativo .dll principal (normalmente, wwwroot/bin), ou
    • Disponível no caminho atual.

    Para obter mais informações sobre as diferentes opções de símbolo disponíveis, consulte a documentação do Visual Studio. Para obter melhores resultados, recomendamos que você use Completo, Portátil ou Incorporado.

  • Compilações otimizadas

    Em alguns casos, as variáveis locais não podem ser visualizadas em compilações de versão devido a otimizações aplicadas pelo compilador JIT.

    No entanto, no Serviço de Aplicativo, o Depurador de Instantâneo pode desotimizar métodos de lançamento que fazem parte de seu plano de coleta.

    Gorjeta

    Instale a extensão Site do Application Insights em sua instância do Serviço de Aplicativo para obter suporte à desotimização.

Próximos passos

Habilite o depurador de instantâneo do Application Insights para seu aplicativo: