BT

Stack Traces mais limpas em .NET/.NET Core

| por Jonathan Allen Seguir 609 Seguidores , traduzido por Rafael Guedes Seguir 0 Seguidores em 30 mai 2018. Tempo estimado de leitura: 1 minuto |

Em linguagens baseadas em exceções, stack traces são uma das ferramentas mais importantes para diagnosticar um problema. Em muitos casos, uma breve mensagem de erro e o stack trace são as únicas informações disponíveis para o desenvolvedor. Especialmente quando o PII (Personably Identifiable Information), limitam o que pode ser registrado.

Como o advento do Task Parallel Library (TPL), e, depois, do async/await, stack traces ficaram cada vez mais difíceis de entender. Não é incomum que as informações úteis estejam ocultas entre várias ocorrências de:

E esta, efetivamente, é uma das melhorias. Antes do .NET 4.5 e da adoção da classe ExceptionDispatchInfo, stack traces não podiam ultrapassar os limites de assincronismo e, em vez disso, os desenvolvedores teriam que investigar por meios de exceções internas. Mas muito mais pode ser feito.

O desenvolvedor de jogos da empresa Illyriad, Bem Adams, tomou para si a tarefa de melhorar o stack trace do .NET Core 2.1. Ele trabalhou focado nas seguintes áreas:

  1. Remover as interferências introduzidas pelos pontos de chamadas async/await.
  2. Exibir qual método de sobrecarga foi chamado durante um async ou iterator context.

Enquanto isso, Anirudh Agnihotry atualizou o KeyNotFoundException utilizado pelo Dictionary/ConcurrentDicTionary para apontar qual chave não foi encontrada, um incômodo para desenvolvedores .NET desde a versão 1.0.

Se você estiver no framework .NET ou não gostaria de esperar pelo .NET Core 2.1, você ainda pode se beneficiar do trabalho do Ben usando a biblioteca Bem.Demystifier. Essa biblioteca contém alterações que vão além das que ele fez no .NET Core e faz com que a leitura da stack trace seja mais próximo do código C# original. (Essa não era uma opção do .NET Core, já que mostram palavras-chave C# em um stack trace VB ou F# não seria muito útil).

.NET Core é publicado com a licença MIT. Bem.Demystifier está disponível sob a licença Apache.

Avalie esse artigo

Relevância
Estilo/Redação

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

Texto não traduzido by Rafael Lillo

O texto para mim não está aparecendo traduzido

Re: Texto não traduzido by Júlia Fernandes Gonçalves

Olá Rafael,

Muito obrigada pelo feedback, já resolvemos o problema! Abraços

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

2 Dê sua opinião

Faça seu login para melhorar sua experiência com o InfoQ e ter acesso a funcionalidades exclusivas


Esqueci minha senha

Follow

Siga seus tópicos e editores favoritos

Acompanhe e seja notificados sobre as mais importantes novidades do mundo do desenvolvimento de software.

Like

Mais interação, mais personalização

Crie seu próprio feed de novidades escolhendo os tópicos e pessoas que você gostaria de acompanhar.

Notifications

Fique por dentro das novidades!

Configure as notificações e acompanhe as novidades relacionada a tópicos, conteúdos e pessoas de seu interesse

BT