Diagnosticando uma aplicação no .NET Core 3.0 \| TreinaWeb               Promoção no ar   Matricule-se agora e garanta **54% de desconto**  

  Termina em   Tempo restante da oferta: 03 Horas 

 47 Min 

 03 Seg 

   Tempo restante da oferta: 03 47 03 

  [Assinar →](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?cupom=TW-SCLIENTE26) 

   [                ](https://www.treinaweb.com.br)  Explorar  

 [ Quanto custa? ](#assinatura) [ FAQ ](https://www.treinaweb.com.br#faq) [Matricule-se](#assinatura) [ Entrar ](https://www.treinaweb.com.br/login) 

     [ Início ](https://www.treinaweb.com.br) [ Artigos ](https://www.treinaweb.com.br/blog) Diagnosticando uma aplicação no .NET Core 3.0  [ Infraestrutura e Sistemas Operacionais ](https://www.treinaweb.com.br/blog/categoria/infraestrutura-e-sistemas-operacionais) [ C# ](https://www.treinaweb.com.br/blog/categoria/csharp) [ .NET Core ](https://www.treinaweb.com.br/blog/categoria/net-core) 

# Diagnosticando uma aplicação no .NET Core 3.0

 Conheça as ferramentas dotnet-counters, dotnet-trace e dotnet-dump. E aprenda como elas auxiliam no diagnóstico de uma aplicação .NET Core.

 [ Wladimilson M. Nascimento ](https://www.treinaweb.com.br/blog/autor/wladimilson-m-nascimento) 8 anos atrás

  ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2019/06/03131718/DIAGNÓSTICO.png)  

Na terceira versão do .NET Core foram introduzidas três ferramentas que permitem analisar o estado de uma aplicação em tempo de execução de forma simples:

- dotnet-counters;
- dotnet-trace;
- dotnet-dump.

## Minha aplicação está saudável?

Mesmo que se tenha cuidado e procure criar um bom código, apenas em produção que saberemos exatamente como a aplicação irá se comportar. Às vezes ela pode apresentar algum vazamento de memória ou algum pico inesperado da CPU. Felizmente podemos detectar esses tipos de problemas analisando algumas métricas da aplicação.

Métricas são representações de informações em um intervalo de tempo. No Windows, o .NET Framework gera contadores de performance (perf counters), que fornece algumas métricas das aplicações. Até a versão 2.2 o .NET Core não fornecia nada equivalente, só que na versão 3.0 foi introduzido o EventCounter API.

O EventCounters permite que a aplicação forneça algumas informações sobre o seu estado e através da ferramenta `dotnet-counters`, essas informações podem ser obtidas em tempo real.

Você pode instalar esta ferramenta como global tool com o comando abaixo:

```dos
dotnet tool install --global dotnet-counters --version 1.0.3-preview5.19251.2

```

E iniciá-la com o comando:

```dos
dotnet-counters monitor -p  --refresh-interval 1

```

Como mostrado abaixo:

Você pode obter mais detalhes desta ferramenta na documentação do [repositório dela do Github](https://github.com/dotnet/diagnostics/blob/master/documentation/dotnet-trace-instructions.md).

[  ![Desenvolvedor ASP.NET Full-Stack](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/csharp.svg)   Formação Desenvolvedor ASP.NET Full-Stack Conhecer a formação ](https://www.treinaweb.com.br/formacao/desenvolvedor-aspnet-full-stack)

## Porque minha aplicação está se comportando desta forma?

Enquanto os contadores de performance ajudam a identificar se a aplicação gerou algum comportamento inesperado, eles não deixam claro o que está errado. Para responder esta questão, podemos coletar informações adicionais com “trace”.

### Tracing

Podemos definir “trace” como vestígios que a aplicação gera quando está sendo executada. No sistema isso resulta em registros que descrevem eventos gerados pela aplicação. Esses registros contém o contexto onde os eventos foram gerados, o que nos dá uma ideia melhor sobre o estado do sistema.

Tradicionalmente, o .NET Framework (e frameworks adjacentes, como ASP.NET) gera os “traces” via Event Tracing for Windows (ETW). Já no .NET Core, eles são gerados no ETW no Windows e no LTTng no Linux. No Mac OS X, isso ainda não está disponível.

Na versão 3.0 .NET Core todas as aplicações criam um “pipe” chamado `EventPipe` que permite a geração dos eventos. Para ter acesso as informações geradas, nesta versão também foi introduzida a ferramenta `dotnet-trace`.

Assim como a `dotnet-counters`, esta ferramenta pode ser instalada como uma global tool com o comando abaixo:

```dos
dotnet tool install --global dotnet-trace --version 1.0.3-preview5.19251.2

```

E um “trace” pode ser gerado com o comando:

```dos
dotnet-trace collect -p 

```

Como mostrado abaixo:

No exemplo acima o `dotnet-trace` é executado com as configurações padrão. Mas você pode obter informações de provedores específicos, como explicado [na documentação](https://github.com/dotnet/diagnostics/blob/master/documentation/dotnet-trace-instructions.md) da ferramenta.

Ao executá-la, será gerado por padrão um arquivo \***.netperf**, que contém informações dos eventos gerados pela aplicação. Ele pode ser visualizado no [perfview](https://github.com/Microsoft/perfview) caso esteja em um ambiente Windows, ou caso esteja em um ambiente Unix, pode gerar um arquivo **.speedscope.json** com o atributo `--format`:

```dos
dotnet-trace collect -p  --format "Speedscope"

```

E visualizá-lo no [Speedscope.app](https://www.speedscope.app/):

![](https://dkrn4sk0rn31v.cloudfront.net/2019/06/03131712/Speedscope.png)

## Porque a minha aplicação “deu pau”?

Em alguns casos, não é possível aferir o que causou o problema da aplicação apenas analisando os eventos gerados, para isso, “process dump” (despejo de processo) pode ser a alternativa.

O “dump” é um registro do estado da memória utilizada pelo processo no momento que ele foi finalizado inesperadamente. Por isso, a análise deste registro é muito utilizada para identificar porque a aplicação foi finalizada ou apresentou algum comportamento inesperado.

Tradicionalmente, se confia no sistema operacional para capturar este registro quando a aplicação é finalizada (e.g. Windows Error Reporting) ou alguma ferramenta como [procdump](https://docs.microsoft.com/en-us/sysinternals/downloads/procdump), para captar baseado em um critério.

Só que filtrar apenas as informações pertinentes a uma aplicação .NET Core é um desafio, principalmente em um ambiente Linux. Para ajudar nisso, foi criada a ferramenta `dotnet-dump`.

Como está em desenvolvimento, ela ainda não é totalmente suportada em todos os sistemas, como mostra a tabela abaixo de recursos:

WindowsMac OS XLinuxCollect✓×✓Analyze××✓

Assim como as demais, esta ferramenta é uma global tool que pode ser instalada com o comando abaixo:

```
dotnet tool install --global dotnet-dump --version 1.0.3-preview5.19251.2

```

E o dump pode ser criado com o comando abaixo:

```
sudo dotnet-dump collect -p 

```

No Linux, ele pode ser analisado com o comando abaixo:

```
dotnet dump analyze 

```

Você pode ver mais detalhes desta ferramenta na documentação do [repositório dela do Github](https://github.com/dotnet/diagnostics/blob/master/documentation/dotnet-dump-instructions.md).

## Concluindo

Assim como a versão 3.0 do .NET Core, no momento essas ferramentas estão em preview, mas já mostram um grande potencial. Quando saíram do preview, devem se tornar ferramentas essenciais de qualquer desenvolvedor .NET Core.

- [ #ferramentas ](https://www.treinaweb.com.br/blog/tag/ferramentas)
- [ #.NET Core 3.0 ](https://www.treinaweb.com.br/blog/tag/net-core-3-0)
- [ #Diaginóstico ](https://www.treinaweb.com.br/blog/tag/diaginostico)

Autor

 ![Wladimilson M. Nascimento](//secure.gravatar.com/avatar/f0dd442f156a3eacd2880e9cd0eafbd1?d=mm)

## Wladimilson M. Nascimento

 Instrutor, nerd, cinéfilo e desenvolvedor nas horas vagas. Graduado em Ciências da Computação pela Universidade Metodista de São Paulo. 

 [Todos os artigos](https://www.treinaweb.com.br/blog/autor/wladimilson-m-nascimento)  

## Continue estudando

 Transforme leitura em prática com os cursos e formações da TreinaWeb.

 [Ver cursos](https://www.treinaweb.com.br/cursos)   

  Continue lendo

## Artigos relacionados

- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/07/FERRAMENTAS-LANDING-PAGE-400x280.png)  [ Marketing Digital ](https://www.treinaweb.com.br/blog/categoria/marketing-digital) 

     6 anos atrás

    ##  [ Ferramentas para criar Landing Page ](https://www.treinaweb.com.br/blog/ferramentas-para-criar-landing-page) 

     Veja neste artigo algumas ferramentas para criar Landing Page.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2019/10/04103322/ferramentas-php-400x280.png)  [ PHP ](https://www.treinaweb.com.br/blog/categoria/php) 

     7 anos atrás

    ##  [ Ferramentas essenciais para um projeto PHP ](https://www.treinaweb.com.br/blog/ferramentas-essenciais-para-um-projeto-php) 

     Neste artigo cito as quatro principais ferramentas que considero essenciais para qualquer projeto PHP: PHPUnit, PHPStan, PHP-CS-Fixer e PHP Insights.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2019/06/11155549/capa-ferramenta-gestao-projetos-400x280.png)  [ Testes e Projetos ](https://www.treinaweb.com.br/blog/categoria/testes-e-projetos) 

     8 anos atrás

    ##  [ Ferramentas que auxiliam na gestão de projetos ](https://www.treinaweb.com.br/blog/ferramentas-que-auxiliam-na-gestao-de-projetos) 

     Confira neste artigo algumas ferramentas, em sua maioria gratuitas, para auxiliar na gestão de projetos.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2019/03/25180146/FERRAMENTAS-400x280.png)  [ Tecnologia ](https://www.treinaweb.com.br/blog/categoria/tecnologia) 

     8 anos atrás

    ##  [ Ferramentas para trabalhar em equipe remotamente ](https://www.treinaweb.com.br/blog/ferramentas-para-trabalhar-em-equipe-remotamente) 

     Neste artigo veremos como as aplicações podem ajudar na comunicação entre equipes remotas.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2018/05/06062246/pixelart-softwares-400x280.png)  [ Desenvolvimento de Jogos ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-de-jogos) 

     9 anos atrás

    ##  [ Ferramentas para Pixel Art ](https://www.treinaweb.com.br/blog/ferramentas-para-pixel-art) 

     Conheça as melhores ferramentas desktop, web ou mobile para se trabalhar com Pixel Art.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/05/ferramentas-servicos-1-400x280.jpg)  [ Desenvolvimento ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento) 

     10 anos atrás

    ##  [ A era das ferramentas em forma de serviço ](https://www.treinaweb.com.br/blog/a-era-das-ferramentas-em-forma-de-servico) 

     Qual o motivo por trás do surgimento de tantas ferramentas em forma de serviço? Quais as principais e mais indicadas?

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/02/gerando-apis-clients-com-as-ferramentas-de-openapi-do-net-400x280.png)  [ Desenvolvimento Back-end ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-back-end) 

     6 anos atrás

    ##  [ Gerando APIs clients com as ferramentas de OpenAPI do .NET ](https://www.treinaweb.com.br/blog/gerando-apis-clients-com-as-ferramentas-de-openapi-do-net) 

     Aprenda como gerar APIs clientes com a global tool Microsoft.dotnet-openapi.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2023/07/DICA-CODIGO-JAVA-1-400x280.jpg)  [ Java ](https://www.treinaweb.com.br/blog/categoria/java) 

     3 anos atrás

    ##  [ Dica de Código: Principais coleções do Java ](https://www.treinaweb.com.br/blog/dica-de-codigo-principais-colecoes-do-java) 

     Explore as poderosas ferramentas do Java Collections Framework: List, Set e Map. Domine a manipulação de dados com eficiência!

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/08/técnicas-acessibilidade-web-400x280.png)  [ Acessibilidade e User Experience (UX) ](https://www.treinaweb.com.br/blog/categoria/acessibilidade-e-user-experience-ux) 

     6 anos atrás

    ##  [ Técnicas de acessibilidade para deixar o seu site mais inclusivo ](https://www.treinaweb.com.br/blog/tecnicas-de-acessibilidade-para-deixar-o-seu-site-mais-inclusivo) 

     Conheça as principais ferramentas e técnicas de acessibilidade para web. Veja também tipos de dificuldades e deficiências atendidas por elas.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/06/BOOTSTRAP-400x280.png)  [ Desenvolvimento Front-end ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-front-end) 

     7 anos atrás

    ##  [ O que é Bootstrap? ](https://www.treinaweb.com.br/blog/o-que-e-bootstrap) 

     Os frameworks são ferramentas incríveis e que poupam muito tempo dos desenvolvedores. Neste artigo, vamos conferir o Bootstrap, um dos mais populares frameworks front-end atualmente.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2019/11/04160959/instalador-aplicacoes-windows-400x280.png)  [ Desenvolvimento Back-end ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-back-end) 

     7 anos atrás

    ##  [ Criando um instalador para distribuir suas aplicações Windows ](https://www.treinaweb.com.br/blog/criando-um-instalador-para-distribuir-suas-aplicacoes-windows) 

     Existe uma gama de ferramentas que permitem a criação de um instalador do Windows. Neste artigo veja como criar um de forma simples utilizando o Inno Setup.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2018/12/11104715/FERRAMENTAS-PROMPT-400x280.png)  [ Infraestrutura e Sistemas Operacionais ](https://www.treinaweb.com.br/blog/categoria/infraestrutura-e-sistemas-operacionais) 

     8 anos atrás

    ##  [ Alternativas para substituir o prompt de comando do Windows ](https://www.treinaweb.com.br/blog/alternativas-para-substituir-o-prompt-de-comando-do-windows) 

     Neste artigo veremos algumas opções de ferramentas para substituir o prompt de comando do Windows.

     Ler artigo

## Um ano de acesso total para você viver de programação.

 Todos os cursos e formações da TreinaWeb numa única assinatura, com professores que atuam no mercado, suporte direto e certificados. Do primeiro `console.log` ao mercado de trabalho.

- **1 ano** de acesso a **todos os cursos**
- Cursos novos **toda semana**
- Suporte **direto com professores**
- Plano de carreira **personalizado**
- **Certificados digitais** inclusos
- **Aplicativos** para Android e iOS, com **acesso offline**

    **Garantia incondicional de satisfação** 

 Teste por 7 dias e, se não fizer sentido para você, devolvemos seu dinheiro.

### Acesso completo a todos os cursos e dezenas de Formações.

 12 meses 

  Economize R$ 840,00  54% OFF 

 de 12x R$ 129,00 por apenas

 12x  R$ 59,00

 sem juros no cartão de crédito ou R$ 599,00 à vista

  Oferta termina em  **03h 47min 03s**

- Acesso imediato e ilimitado durante 1 ano.
- Plano de carreira personalizado.
- Suporte direto com professores.
- E muito mais!

 [Matricule-se agora](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?cupom=TW-SCLIENTE26)

     [                ](https://www.treinaweb.com.br)

 Escola online de programação, tecnologia e IA.

- [  ](https://www.facebook.com/TreinaWeb/)
- [  ](https://www.instagram.com/treinaweb/)
- [  ](https://www.youtube.com/user/TreinaWeb)
- [  ](https://twitter.com/treinaweb)
- [  ](https://www.linkedin.com/company/treinaweb)
- [  ](https://github.com/treinaweb)

## Inscreva-se em nossa newsletter

Receba lançamentos, promoções e novidades.

   Seu nome     Seu WhatsApp     Seu melhor e-mail   Inscrever-se 

## Cursos

- [ Base para Devs ](https://www.treinaweb.com.br/categoria/base-para-devs)
- [ Front-end ](https://www.treinaweb.com.br/categoria/desenvolvimento-front-end)
- [ Back-end ](https://www.treinaweb.com.br/categoria/desenvolvimento-back-end)
- [ Mobile ](https://www.treinaweb.com.br/categoria/desenvolvimento-mobile)
- [ Bancos de Dados ](https://www.treinaweb.com.br/categoria/bancos-de-dados)
- [ Cloud ](https://www.treinaweb.com.br/categoria/cloud-computing)
- [ IA ](https://www.treinaweb.com.br/categoria/ia)
- [ E mais ](https://www.treinaweb.com.br/categoria/e-mais)
- [ Ver todos os cursos ](https://www.treinaweb.com.br/cursos)

## Conteúdo

- [ Formações ](https://www.treinaweb.com.br/formacoes)
- [ Projetos práticos ](https://www.treinaweb.com.br/projetos-praticos)
- [ Direto ao ponto ](https://www.treinaweb.com.br/direto-ao-ponto)
- [ Planos ](https://www.treinaweb.com.br#assinatura)
- [ Depoimentos ](https://www.treinaweb.com.br#depoimentos)
- [ Comunidade ](https://www.treinaweb.com.br#comunidade)
- [ Corpo docente ](https://www.treinaweb.com.br#docente)

## A empresa

- [ Sobre a TreinaWeb ](https://www.treinaweb.com.br#sobre)
- [ Perguntas frequentes ](https://www.treinaweb.com.br#faq)
- [ Vantagens de estudar na TreinaWeb ](https://www.treinaweb.com.br/vantagens-de-estudar-na-treinaweb)
- [ Cursos para empresas ](https://www.treinaweb.com.br/empresas)
- [ Sugira um novo curso ](https://www.treinaweb.com.br/sugerir-curso)
- [ Trabalhe conosco ](https://www.treinaweb.com.br/trabalhe-conosco)
- [ Artigos ](https://www.treinaweb.com.br/blog)
- [ Desenvolvedores e agentes ](https://www.treinaweb.com.br/developers)
- [ Contato ](https://www.treinaweb.com.br/contato)
- [ Política de privacidade ](https://www.treinaweb.com.br/politica-de-privacidade)
- [ Termos de uso ](https://www.treinaweb.com.br/termos-de-uso)

## Baixe nosso aplicativo

 [   Disponível na **App Store**  ](https://apps.apple.com/us/app/treinaweb/id1322729447) [   Disponível no **Google Play**  ](https://play.google.com/store/apps/details?id=br.com.treinaweb.mobile) 

  Av. Paulista, 1765, Conj 71 e 72 · Bela Vista · São Paulo · SP · 01311-200   © 2004 – 2026 TreinaWeb Tecnologia LTDA · CNPJ 06.156.637/0001-58
