Partilhar via


Diagnósticos especializados

Se a depuração ou a observabilidade não forem suficientes, o .NET oferece suporte a mecanismos de diagnóstico adicionais.

Rastreamento com a origem do evento

A Fonte de Eventos fornece a capacidade de coletar informações de diagnóstico detalhadas sobre o que está acontecendo dentro dos processos .NET. Ele inclui informações de telemetria para o tempo de execução, GC, bibliotecas e código do aplicativo.

Os dados da fonte do evento podem ser coletados durante o processo usando a System.Diagnostics.Tracing.EventListener API ou com ferramentas de diagnóstico externas, como Visual Studio, dotnet-monitor, dotnet-trace, PerfView e os scripts Perfcollect . O uso de ferramentas externas para coletar dados de origem de eventos em rastreamentos é comumente usado para análise de desempenho.

EventPipe

EventPipe é um componente de tempo de execução que pode ser usado para coletar dados de rastreamento, semelhante ao ETW ou LTTng. O objetivo do EventPipe é permitir que os desenvolvedores .NET rastreiem facilmente seus aplicativos .NET sem ter que depender de componentes nativos do sistema operacional específicos da plataforma, como ETW ou LTTng.

O EventPipe é o mecanismo por trás de muitas das ferramentas de diagnóstico. Ele pode ser usado para consumir eventos emitidos pelo tempo de execução, bem como eventos personalizados escritos com EventSource.

Lixeiras

Um dump é um arquivo que contém um instantâneo do processo no momento da criação do dump. Os despejos podem ser úteis para examinar o estado do seu aplicativo para fins de depuração.

Símbolos

Símbolos são um mapeamento entre o código-fonte e o binário produzido pelo compilador. Eles são comumente usados por depuradores .NET e ferramentas de rastreamento para resolver números de linha de origem, nomes de variáveis locais e outros tipos de informações de diagnóstico.

Porta de diagnóstico

O tempo de execução do .NET expõe um ponto de extremidade de serviço que permite que outros processos enviem comandos de diagnóstico e recebam respostas por um canal IPC. Esse ponto de extremidade é chamado de porta de diagnóstico. Os comandos podem ser enviados para a porta de diagnóstico para:

  • Capture um despejo de memória.
  • Inicie um rastreamento do EventPipe.
  • Solicite a linha de comando usada para iniciar o aplicativo.

FonteDiagnóstico & OuvinteDiagnóstico

DiagnosticSource é um módulo que permite que o código seja instrumentado para registro em tempo de produção de cargas úteis de dados avançados para consumo dentro do processo que foi instrumentado. Em tempo de execução, os consumidores podem descobrir dinamicamente fontes de dados e subscrever as que lhes interessam. System.Diagnostics.DiagnosticSourcefoi projetado para permitir que ferramentas em processo acessem dados ricos, como bibliotecas de instrumentação OpenTelemetry . Os dados do DiagnosticSource também podem ser enviados via EventPipe, o que permite que dados de diagnóstico avançados sejam coletados por ferramentas dedicadas.

Coletar diagnósticos em contêineres

As mesmas ferramentas de diagnóstico que são usadas em ambientes Linux não conteinerizados também podem ser usadas para coletar diagnósticos em contêineres. Há apenas algumas alterações de uso necessárias para garantir que as ferramentas funcionem em um contêiner do Docker.

Consulte também