Que ferramentas de diagnóstico estão disponíveis em .NET Core?
O software nem sempre se comporta como seria de esperar, mas .NET Core tem ferramentas e APIs que o ajudarão a diagnosticar estes problemas de forma rápida e eficaz.
Este artigo ajuda-o a encontrar as várias ferramentas de que necessita.
Debuggers
Os depurggers permitem-lhe interagir com o seu programa. Fazer uma pausa, executar, examinar e retomar dá-lhe uma visão do comportamento do seu código. Um depurante é uma boa escolha para diagnosticar problemas funcionais que podem ser facilmente reproduzidos.
Teste de unidades
O teste unitário é um componente fundamental da integração contínua e implantação de software de alta qualidade. Os testes de unidade são concebidos para lhe dar um aviso precoce quando quebra algo.
Instrumentação para a observabilidade
.NET suporta técnicas de instrumentação padrão da indústria utilizando métricas, troncos e vestígios distribuídos. Instrumentação é um código que é adicionado a um projeto de software para registar o que está a fazer. Estas informações podem então ser recolhidas em ficheiros, bases de dados ou na memória e analisadas para entender como um programa de software está a funcionar. Isto é frequentemente utilizado em ambientes de produção para monitorizar os problemas e diagnosticá-los. O tempo de execução .NET tem instrumentação incorporada que pode ser opcionalmente ativada e APIs que permitem adicionar instrumentação personalizada especializada para a sua aplicação.
Métricas
As métricas são medições numéricas registadas ao longo do tempo para monitorizar o desempenho da aplicação e a saúde. As métricas são frequentemente usadas para gerar alertas quando potenciais problemas são detetados. As métricas têm uma sobrecarga de desempenho muito baixa e muitos serviços configuram-nos como telemetria sempre ligado.
Registos
O registo madeireira é uma técnica em que o código é instrumentado para produzir um registo, um registo de eventos interessantes que ocorreram durante o programa em execução. Muitas vezes, um conjunto de eventos de log é configurado por padrão e a exploração madeireira mais extensa pode ser ativada a pedido para diagnosticar problemas específicos. A sobrecarga de desempenho é variável dependendo da quantidade de dados que estão a ser registados.
Vestígios distribuídos
O Rastreio Distribuído é uma forma especializada de registo que o ajuda a localizar falhas e problemas de desempenho dentro de aplicações distribuídas por várias máquinas ou processos. Esta técnica acompanha os pedidos através de uma aplicação que correlaciona o trabalho realizado por diferentes componentes de aplicação e separando-o de outros trabalhos que a aplicação pode estar a fazer para pedidos simultâneos. É possível rastrear todos os pedidos e a amostragem pode ser opcionalmente utilizada para vincular a sobrecarga de desempenho.
Despejos
Uma lixeira é um ficheiro que contém uma imagem instantânea do processo no momento da criação. Estes podem ser úteis para examinar o estado do seu pedido para fins de depuragem.
Símbolos
Os símbolos são um mapeamento entre o código-fonte e o binário produzido pelo compilador. Estes são geralmente usados por depurados .NET para resolver números de linha de origem, nomes variáveis locais e outros tipos de informação de diagnóstico.
Recolher diagnósticos em contentores
As mesmas ferramentas de diagnóstico que são utilizadas em ambientes Linux não-contentorizados também podem ser usadas para recolher diagnósticos em recipientes. São necessárias algumas alterações de utilização para garantir que as ferramentas funcionam num recipiente Docker.
.NET Ferramentas globais de diagnóstico de diagnóstico
pontos de pontonet
dotnet-counters é uma ferramenta de monitorização do desempenho para monitorização de saúde de primeiro nível e investigação de desempenho. Observa os valores de contador de desempenho publicados através da EventCounter API. Por exemplo, pode monitorizar rapidamente coisas como a utilização do CPU ou a taxa de exceções que estão a ser lançadas na sua aplicação .NET Core.
dotnet-dump
A ferramenta de despejo de dotnet é uma forma de recolher e analisar Windows e as lixeiras do núcleo de Linux sem um depurado nativo.
dotnet-gcdump
A ferramenta dotnet-gcdump é uma forma de recolher depósitos de GC (Garbage Collector) de processos ao vivo .NET.
dotnet-trace
.NET Core inclui o que é chamado de através do qual os EventPipe
dados de diagnóstico são expostos. A ferramenta dotnet-trace permite-lhe consumir dados de perfis interessantes da sua aplicação que podem ajudar em cenários onde você precisa de raiz causar aplicações a correr devagar.
dotnet-stack
A ferramenta dotnet-stack permite-lhe imprimir rapidamente as pilhas geridas para todos os fios num processo de execução .NET.
dotnet-símbolo
dotnet-symbol descarrega ficheiros (símbolos, DAC/DBI, ficheiros de anfitrião, etc.) necessários para abrir uma lixeira ou minidump. Utilize esta ferramenta se precisar de símbolos e módulos para depurar um ficheiro de despejo capturado numa máquina diferente.
dotnet-sos
Dotnet-sos instala a extensão de depuragem SOS no Linux e no macOS (e em Windows se estiver a utilizar o Windbg/cdb).
PerfCollect
PerfCollect é um script de bash que você pode usar para recolher vestígios com perf
e LTTng
para uma análise de desempenho mais aprofundada de aplicações .NET em execução nas distribuições do Linux.
.NET Tutoriais de diagnóstico de núcleo
Escreva a sua própria ferramenta de diagnóstico
A biblioteca de clientes de diagnóstico permite-lhe escrever a sua própria ferramenta de diagnóstico personalizada mais adequada para o seu cenário de diagnóstico. Consulte informações na referência microsoft.Diagnostics.NETCore.Client API.
Depurar uma fuga de memória
Tutorial: Debug uma fuga de memória sai por encontrar uma fuga de memória. A ferramenta dotnet-counters é utilizada para confirmar a fuga e a ferramenta de despejo de dotnet é utilizada para diagnosticar a fuga.
Debug alto uso cpu
Tutorial: Debug alta utilização do CPU acompanha-o através da investigação de alto uso do CPU. Utiliza a ferramenta dos contadores de pontos para confirmar a elevada utilização do CPU. Em seguida, acompanha-o através da utilização do Trace para o utilitário de análise de desempenho (dotnet-trace
) ou Linux perf
para recolher e visualizar o perfil de utilização do CPU.
Depurar impasse
Tutorial: O impasse de Debug mostra-lhe como usar a ferramenta de despejo de dotnet para investigar fios e fechaduras.
Fome de Debug ThreadPool
Tutorial: A fome de Debug threadPoolmostra-lhe como usar os contadores de pontos e ferramentasde dotnet-stack para investigar a fome de ThreadPool.
Depurar um StackOverflow
Tutorial: Debug a StackOverflow demonstra como depurar um StackOverflowException em Linux.
Despejos de Debug Linux
Debug Linux despeja explica como recolher e analisar despejos em Linux.
Medir o desempenho usando o EventCounters
Tutorial: Medir o desempenho utilizando o EventCounters em .NET mostra-lhe como usar a API para medir o EventCounter desempenho na sua aplicação .NET.