Ferramentas de logs e observabilidade

Formatar stack tracepara JavaScript, Python, Java, Go, C# e Rust

Cole um stack trace, deixe a detecção automática escolher o idioma (ou escolha você mesmo) e recolha os frames de framework que atrapalham.

Formatar stack trace

Exemplo:
Idioma

Stack trace

Tudo roda localmente no seu navegador. O stack trace nunca é enviado.

Frames

Digitando… vai analisar automaticamente

Um stack trace bruto jogado num terminal ou num relatório de bug é uma parede de linhas "at ..." ou "File ..." quase idênticas, e o único frame que realmente aponta para o seu código costuma ficar enterrado no meio das chamadas internas do framework. Chame de formatar stack trace, de analisador de stack trace ou de conseguir uma pilha de chamadas legível, o trabalho é o mesmo: transformar essa parede de texto numa lista de frames que dá para ler de relance.

Útil bem no momento em que uma exceção real aparece — no console do navegador, num log de CI, num relatório de crash ou numa mensagem de um colega — quando você precisa da cadeia de chamadas, do arquivo e da linha exatos, e da causa raiz, sem contar na mão os blocos "Caused by:" nem rolar por cinquenta frames de node_modules até achar seu próprio código. Todo o processamento acontece na aba do navegador; nada do que você cola é enviado para lugar nenhum.

Por que usar esta ferramenta para formatar stack trace

Feita para seis formatos reais de stack trace, não um padrão genérico forçado a encaixar.

Detecção automática que ainda dá para sobrescrever

Ao colar o texto, o idioma normalmente é detectado corretamente analisando a sintaxe dos próprios frames, então quase nunca é preciso mexer no menu suspenso. Quando um trace mistura estilos ou a detecção erra, seis idiomas explícitos (JavaScript/Node, Python, Java/Kotlin, Go, C#/.NET, Rust) estão a um clique de distância, para nunca ficar preso a um palpite que não dá para corrigir.

Um menu de idioma mudando de detecção automática para uma escolha manual, enquanto o mesmo trace é analisado de novo

Cadeias Caused by exibidas como blocos separados

Uma exceção Java com uma cadeia Caused by, ou um traceback Python encadeado por "During handling of...", é dividido em blocos independentes e rotulados, em ordem, assim a causa raiz lá embaixo fica tão fácil de achar quanto a exceção externa lá em cima — em vez de um fluxo longo e indistinguível de frames.

Um stack trace Java dividido em dois blocos conectados por um rótulo Caused by, com a causa raiz mostrada por último

O ruído dos frameworks recolhe numa linha

Com Recolher frames de framework ativado, os frames consecutivos de node_modules, site-packages ou org.springframework se recolhem numa linha "N frames recolhidos", assim o seu próprio código aparece primeiro — qualquer grupo recolhido reabre com um clique.

Uma sequência de frames de node_modules recolhida numa linha de resumo, com o frame do próprio usuário logo acima

Três coisas que esta lista de frames faz automaticamente por você

Analise um trace, recolha o que não precisa ler e copie exatamente o que precisa.

01

Cole qualquer um dos seis formatos suportados

Cole um stack trace bruto de JavaScript/Node, Python, Java/Kotlin, Go, C# ou Rust sem precisar limpar nada antes. A análise dispara automaticamente cerca de 350 milissegundos depois que você para de digitar, ou desligue a análise automática para usar um botão manual mais Ctrl/Cmd+Enter.

  • Carregue um dos três exemplos embutidos para ver uma cadeia Caused by, um traceback Python e ruído de node_modules sem digitar nada
  • Uma linha que não bate com nenhum formato conhecido fica como está e é marcada "Não reconhecido", sem fazer a análise inteira falhar
02

Recolha os frames que você não precisa ler

Os frames consecutivos de node_modules, site-packages, java./org.springframework., runtime., std::/core:: ou System. (dependendo do idioma detectado) se recolhem numa linha "{count} frames recolhidos" quando a opção está ligada. Alternar a opção não dispara uma nova análise, só reagrupa o mesmo resultado na hora.

  • Um único frame de framework cercado pelo seu próprio código não é recolhido — o recolhimento só entra a partir de dois frames consecutivos ou mais
  • Cada grupo recolhido pode ser expandido individualmente com um clique, sem precisar desligar a opção inteira
03

Copie exatamente o que você precisa

Clique no file:line de qualquer frame reconhecido para copiar só aquela posição — útil para pular direto para a linha certa no seu editor. Copiar e Baixar exportam o trace inteiro reformatado como texto simples no estilo próprio daquele idioma, e os dois ficam desativados assim que você muda a entrada ou uma opção, então nunca dá para copiar um resultado desatualizado.

  • O tipo e a mensagem da exceção ficam destacados no topo de cada bloco, incluindo cada causa Caused by
Formatar stack trace agora

O que esta lista de frames traz além do texto bruto

Campos estruturados, detecção de cadeias e recolhimento de ruído para seis formatos reais.

Reconhecimento de frames para seis idiomas

JavaScript/Node, Python, Java/Kotlin, Go, C#/.NET e Rust têm cada um sua própria sintaxe de frame, dividida em nome da função, arquivo, linha e coluna onde o formato permite — não simplesmente linha por linha, o que faz formatar stack trace com esta ferramenta parecer a saída da própria runtime.

Cadeias Caused by e traceback

A cadeia Caused by do Java e os tracebacks de vários níveis do Python são detectados como blocos independentes, em ordem, causa raiz incluída — sem precisar contar níveis de indentação no olho.

Ruído de frameworks recolhível

node_modules, site-packages, java./org.springframework. e outros namespaces de framework recolhem numa linha de resumo seguindo as regras próprias de cada idioma, e qualquer grupo recolhido reabre com um clique.

Cópia de file:line por frame

Cada frame reconhecido tem seu próprio botão de cópia só para o arquivo e a linha dele, separado de copiar o trace inteiro.

Linhas não reconhecidas continuam visíveis

Uma linha que não bate com a sintaxe do formato escolhido não é descartada: ela fica no lugar, marcada "Não reconhecido", sem fazer a análise inteira falhar.

O que esta ferramenta faz e o que não faz

O comportamento real e os limites de verdade, não um aviso legal genérico.

Sem simbolização nem reversão de source map
Nomes de função minificados e caminhos comprimidos aparecem exatamente como foram colados. Transformá-los de volta na posição original do código-fonte exigiria o source map ou os símbolos de debug correspondentes, que esta ferramenta para formatar stack trace nunca envia nem baixa.
Só stack traces em texto, sem dumps binários
Core dumps, minidumps e outros artefatos binários de crash não são aceitos — cole o stack trace em texto que sua runtime ou ferramenta de relatório de crash já imprimiu.
Seis idiomas declarados, sem chute aberto
Só é reconhecida a sintaxe de frame de JavaScript/Node, Python, Java/Kotlin, Go, C#/.NET e Rust. Traces de Ruby, PHP, C/C++ e Swift voltam em grande parte como "Não reconhecido", em vez de serem forçados num formato errado.
Copiar e baixar sempre geram texto simples
O resultado reformatado nunca vem embrulhado num bloco de código Markdown, mesmo que algumas ferramentas concorrentes façam isso — fica em texto simples para colar limpo num terminal, editor ou ticket.

Perguntas frequentes sobre formatar stack trace

Respostas para as perguntas que surgem antes de colar uma exceção real numa ferramenta online.

É seguro colar um stack trace numa ferramenta online?

É — esta ferramenta analisa tudo como JavaScript dentro da aba atual do seu navegador. Nada do que você cola é enviado, registrado ou mandado para um servidor, incluindo caminhos de arquivo locais ou nomes de usuário que aparecem nos frames.

Como escondo os frames de node_modules num stack trace?

Ative Recolher frames de framework na barra de ferramentas. Os frames consecutivos de node_modules (ou site-packages, java./org.springframework., etc.) se recolhem numa linha, e clicar nela reabre o grupo.

Esta ferramenta para formatar stack trace suporta Java, Python e JavaScript?

Suporta, junto com Go, C#/.NET e Rust — seis idiomas no total. A detecção automática costuma escolher o idioma certo pela sintaxe dos frames; também dá para forçar um idioma específico no menu suspenso.

Qual é a diferença entre stack trace, traceback e backtrace?

É o mesmo conceito com nomes diferentes de acordo com o ecossistema — Python chama de traceback, C e Ruby costumam dizer backtrace, e JavaScript, Java, C#, Go e Rust geralmente dizem stack trace. Esta ferramenta reconhece todos eles; use o termo com o qual você estiver mais acostumado.

Isso remove caminhos de arquivo ou nomes de usuário antes de eu compartilhar?

Não — caminhos e outros detalhes aparecem exatamente como colados, nada é ocultado automaticamente. Como nada sai do navegador de qualquer forma, vale revisar o texto você mesmo antes de colar em algum lugar menos privado, como um rastreador de bugs público.

Funciona para panics do Go e backtraces do Rust, não só exceções?

Funciona. Os dumps de goroutine do Go (uma linha de função mais uma linha file:line com indentação de tab) e a saída numerada do Rust com RUST_BACKTRACE=1 são analisados do mesmo jeito que os idiomas com exceções, incluindo seus próprios padrões de frames de framework como runtime. ou std::/core::.

Achou um trace real que esta ferramenta analisa errado?

Formatar stack trace agora

Cole um stack trace de JavaScript, Python, Java, Go, C# ou Rust e receba uma lista de frames legível em menos de um segundo — sem envio, sem conta.

Salve esta ferramenta gratuita nos favoritos para a próxima exceção que aparecer no seu terminal ou na sua caixa de entrada.

Toda a análise acontece localmente no seu navegador.