BT

Início Notícias Stack Traces mais limpas em .NET/.NET Core

Stack Traces mais limpas em .NET/.NET Core

Favoritos

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.

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

Comentários da comunidade

  • Texto não traduzido

    by Rafael Lillo /

    Seu comentário está aguardando aprovação dos moderadores. Obrigado por participar da discussão!

    O texto para mim não está aparecendo traduzido

  • Re: Texto não traduzido

    by Júlia Fernandes Gonçalves /

    Seu comentário está aguardando aprovação dos moderadores. Obrigado por participar da discussão!

    Olá Rafael,

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

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

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

BT

Seu cadastro no InfoQ está atualizado? Poderia rever suas informações?

Nota: se você alterar seu email, receberá uma mensagem de confirmação

Nome da empresa:
Cargo/papel na empresa:
Tamanho da empresa:
País:
Estado:
Você vai receber um email para validação do novo endereço. Esta janela pop-up fechará em instantes.