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.
O software nem sempre se comporta como seria de esperar, mas o .NET tem ferramentas e APIs que o ajudarão a diagnosticar estes problemas de forma rápida e eficaz.
A implantação nativa do AOT é um modelo de aplicativo que está disponível desde o .NET 7. Para obter informações sobre o suporte de diagnóstico do .NET 8 para aplicativos AOT nativos, consulte Diagnóstico de AOT nativo.
Este artigo ajuda-o a encontrar as várias ferramentas de que necessita.
Depuradores
Os depuradores permitem que você interaja com seu programa. Pausar, executar incrementalmente, examinar e retomar fornece informações sobre o comportamento do seu código. Um depurador é uma boa escolha para diagnosticar problemas funcionais que podem ser facilmente reproduzidos.
Criadores de perfil
Os criadores de perfis permitem-lhe analisar o desempenho do seu programa. Você pode coletar dados sobre o uso de memória, uso da CPU e outras métricas para diagnosticar e entender problemas de desempenho.
Instrumentação para observabilidade
O .NET oferece suporte a técnicas de instrumentação padrão do setor usando métricas, logs e rastreamentos distribuídos, comumente conhecidos como os três pilares da observabilidade.
Instrumentação é o código que é adicionado a um projeto de software para registrar o que ele está fazendo. Essas informações podem ser coletadas em arquivos, bancos de dados ou na memória e analisadas para entender como um programa de software está operando. Isso é frequentemente usado em ambientes de produção para monitorar problemas e diagnosticá-los. O tempo de execução do .NET tem instrumentação interna que pode ser habilitada opcionalmente e APIs que permitem adicionar instrumentação personalizada especializada para seu aplicativo.
Registos
O registro em log é uma técnica onde o código é instrumentado para produzir um log, um registro de eventos interessantes que ocorreram enquanto o programa estava em execução. Muitas vezes, um conjunto de eventos de log de linha de base é configurado por padrão e um log mais extenso pode ser habilitado sob demanda para diagnosticar problemas específicos. A sobrecarga de desempenho é variável dependendo da quantidade de dados que estão sendo registrados.
Para a maioria dos casos, seja adicionando log a um projeto existente ou criando um novo projeto, a infraestrutura ILogger é uma boa opção padrão.
ILogger Suporta registro estruturado rápido, configuração flexível e uma coleção de coletores comuns , incluindo o console, que é o que você vê ao executar um aplicativo ASP.NET. Além disso, a ILogger interface também pode servir como uma fachada sobre muitas implementações de log de terceiros que oferecem funcionalidade rica e extensibilidade.
Metrics
As métricas são medições numéricas registradas ao longo do tempo para monitorar o desempenho e a integridade do aplicativo. As métricas são frequentemente usadas para gerar alertas quando possíveis problemas são detetados. As métricas têm uma sobrecarga de desempenho muito baixa e muitos serviços as configuram como telemetria sempre ativa. As exceções geralmente são registradas como métricas e podem ser resumidas para reduzir a cardinalidade dos dados. Para obter mais informações, consulte Resumo de exceções.
Rastreamentos distribuídos
O Rastreamento Distribuído é uma forma especializada de registro em log que ajuda a localizar falhas e problemas de desempenho em aplicativos distribuídos em várias máquinas ou processos. Essa técnica rastreia solicitações por meio de um aplicativo, correlacionando o trabalho feito por diferentes componentes do aplicativo e separando-o de outro trabalho que o aplicativo pode estar fazendo para solicitações simultâneas. É possível rastrear todas as solicitações e a amostragem pode ser opcionalmente empregada para limitar a sobrecarga de desempenho.
Coletar instrumentação
Há várias maneiras pelas quais os dados de instrumentação podem ser retirados do aplicativo, incluindo:
- OpenTelemetry - um padrão multiplataforma, neutro do fornecedor para coletar e exportar telemetria
- Ferramentas da CLI do .NET , como contadores de pontos
- dotnet-monitor - um agente para coletar rastreamentos e telemetria
- Bibliotecas de terceiros ou código de aplicativo podem ler as informações do System.Diagnostics.Metrics, ILogger<TCategoryName>e APIs System.Diagnostics.Activity .
Diagnósticos especializados
Se a depuração ou observabilidade não for suficiente, o .NET oferece suporte a mecanismos de diagnóstico adicionais, como EventSource, Dumps, DiagnosticSource. Para obter mais informações, consulte o artigo de diagnóstico especializado .
Ferramentas de diagnóstico
O .NET suporta várias ferramentas de CLI que podem ser usadas para diagnosticar seus aplicativos.
Tutoriais de diagnóstico do .NET Core
Depurar uma fuga de memória
Tutorial: Depurar um vazamento de memória percorre a localização de um vazamento de memória. A ferramenta dotnet-counters é usada para confirmar o vazamento e a ferramenta dotnet-dump é usada para diagnosticar o vazamento.
Investigar uso elevado de CPU
Tutorial: Depurar alto uso de CPU orienta você através da investigação de alto uso de CPU. Ele usa a ferramenta dotnet-counters para confirmar o alto uso da CPU. Em seguida, ele orienta você pelo uso do utilitário Trace for performance analysis (dotnet-trace) ou Linux perf para coletar e visualizar o perfil de uso da CPU.
Impasse de depuração
Tutorial: Debug deadlock mostra como usar a ferramenta dotnet-dump para investigar threads e bloqueios.
Depurar fome do ThreadPool
Tutorial: Debug threadPool starvation mostra como usar as ferramentas dotnet-counters e dotnet-stack para investigar a fome do ThreadPool.
Depurar um StackOverflow
Tutorial: Depurar um StackOverflow demonstra como depurar um StackOverflowException no Linux.
Depurar dumps do Linux
Debug Linux dumps explica como coletar e analisar dumps no Linux.
Meça o desempenho usando EventCounters
Tutorial: Medir o desempenho usando EventCounters no .NET mostra como usar a API para medir o EventCounter desempenho em seu aplicativo .NET.
Escreva a sua própria ferramenta de diagnóstico
A biblioteca de cliente de diagnóstico permite que você escreva sua própria ferramenta de diagnóstico personalizada mais adequada para seu cenário de diagnóstico. Para obter mais informações, consulte a referência da API Microsoft.Diagnostics.NETCore.Client.