Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O software nem sempre se comporta como você esperaria, mas o .NET tem ferramentas e APIs que ajudarão você a diagnosticar esses problemas de forma rápida e eficaz.
A implantação AOT nativa é 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 o diagnóstico de AOT nativo.
Este artigo ajuda você a encontrar as várias ferramentas necessárias.
Depuradores
Os depuradores permitem que você interaja com seu programa. Pausar, executar, examinar e retomar incrementalmente fornece informações sobre o comportamento do código. Um depurador é uma boa opção para diagnosticar problemas funcionais que podem ser reproduzidos facilmente.
Geradores
Os profilers permitem que você analise o desempenho do programa. Você pode coletar dados sobre uso de memória, uso da CPU e outras métricas para diagnosticar e entender problemas de desempenho.
Instrumentação para observabilidade
O .NET dá 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 é um 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 geralmente é usado em ambientes de produção para monitorar problemas e diagnosticá-los. O runtime do .NET tem instrumentação interna que pode ser opcionalmente habilitada e APIs que permitem adicionar instrumentação personalizada especializada para seu aplicativo.
Logs
O registro em log é uma técnica em que o código é instrumentado para produzir um log, um registro de eventos interessantes que ocorreram durante a execução do programa. Geralmente, um conjunto de linha de base de eventos de log é configurado por padrão e um registro em 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á sendo registrada.
Para a maioria dos casos, seja a adição de log a um projeto existente ou a criação de um novo projeto, a infraestrutura do ILogger é uma boa opção padrão.
ILogger dá suporte a log 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 em relação a muitas implementações de log de terceiros que oferecem funcionalidade avançada e extensibilidade.
Métricas
As métricas são medidas numéricas registradas ao longo do tempo para monitorar o desempenho e a integridade do aplicativo. As métricas geralmente são usadas para gerar alertas quando possíveis problemas são detectados. 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ção.
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ários computadores ou processos. Essa técnica rastreia solicitações por meio de um aplicativo correlacionando o trabalho em conjunto feito por diferentes componentes do aplicativo e separando-o de outros trabalhos que o aplicativo pode estar fazendo para solicitações simultâneas. É possível rastrear cada solicitação e a amostragem pode ser opcionalmente empregada para associar 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 neutro entre plataformas e fornecedores para coletar e exportar telemetria
- Ferramentas da CLI do .NET , como dotnet-counters
- dotnet-monitor - um agente para coletar rastreamentos e telemetria
- Bibliotecas de terceiros ou código de aplicativo podem ler as informações das APIs e System.Diagnostics.Activity das System.Diagnostics.MetricsILogger<TCategoryName>APIs.
Diagnóstico especializado
Se a depuração ou a observabilidade não for suficiente, o .NET oferecerá 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 dá suporte a várias ferramentas da CLI que podem ser usadas para diagnosticar seus aplicativos.
Tutoriais de diagnóstico do .NET Core
Depurar um vazamento 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.
Depurar alto uso da CPU
Tutorial: Depurar o alto uso da CPU orienta você a investigar o alto uso da CPU. Ele usa a ferramenta dotnet-counters para confirmar o alto uso da CPU. Em seguida, ele orienta você usando o utilitário trace for performance analysis (dotnet-trace) ou Linux perf para coletar e exibir o perfil de uso da CPU.
Depurar deadlock
Tutorial: Depurar deadlock mostra como usar a ferramenta dotnet-dump para investigar threads e bloqueios.
Depurar a fome do ThreadPool
Tutorial: Depurar a fome do threadPool 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 despejos do Linux
Depurar despejos do Linux explica como coletar e analisar despejos no Linux.
Medir 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.
Escrever sua própria ferramenta de diagnóstico
A biblioteca de clientes 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.