CodeTracer - depurador de viagem no tempo desenvolvido em Nim e Rust
(github.com/metacraft-labs)- Depurador de viagem no tempo fácil de usar, com suporte a várias linguagens de programação
- Registra a execução do programa para gerar arquivos de trace independentes e compartilháveis, e permite avançar e voltar na execução em um ambiente GUI, além de verificar o histórico de todas as posições de memória
- Vantagens da depuração com viagem no tempo
- É possível resolver facilmente bugs difíceis de reproduzir: se houver uma gravação da execução em que o bug ocorreu, é possível identificar a causa em até 30 minutos
- Resolver bugs fica mais fácil quando se conhece a origem dos valores
- Se uma saída inesperada ocorrer no programa, é possível clicar no evento e verificar imediatamente onde o problema surgiu
- O CodeTracer rastreia onde esse valor foi criado, ajudando a encontrar a causa raiz do bug com apenas alguns movimentos
- É possível navegar livremente para frente e para trás em qualquer momento da execução do programa
- O tracing usa um formato aberto, e estão em andamento projetos de suporte a linguagens como Ruby e Python
- Há planos de integrar com o backend RR para dar suporte à depuração de linguagens de programação de sistemas como C/C++, Rust, Nim, D, Zig, Go, Fortran e FreePascal
Principais recursos do CodeTracer
Onisciência (Omniscience)
- Permite verificar instantaneamente os valores passados e futuros das variáveis em uma linha específica de código durante a execução
- Facilita a exploração de mudanças nos valores das variáveis dentro de loops
- O código executado e o não executado são claramente diferenciados
Tracepoints
- Permite verificar instantaneamente mudanças nos valores das variáveis dentro do programa sem executar código adicional
- É possível adicionar facilmente condicionais, chamadas de função, saídas de dados etc. para depuração
Call Trace
- Em vez de um simples stack trace, fornece a árvore completa de chamadas de função de toda a execução do programa
- Pode ser explorado facilmente com filtragem e ordenação
Explorador de estado e histórico (State and History Explorer)
- Permite rastrear todo o histórico de alterações de valor de todas as variáveis
- Permite ir imediatamente ao ponto do código em que o valor de uma variável foi alterado
- Rastreia automaticamente o valor original de variáveis copiadas, facilitando a análise de bugs
Log de eventos (Event Log)
- Organiza e apresenta em ordem cronológica os eventos importantes do programa
- Ao clicar em um evento específico, é possível ir imediatamente ao código daquele momento
Saída do terminal (Terminal Output)
- Reproduz as saídas de
stdoutestderrcomo em um terminal, permitindo verificar a saída do programa gravado - Ao clicar, é possível ir para a posição exata do código em que a saída foi gerada
Navegação com o mouse (Mouse Stepping)
- Permite usar o mouse para ir imediatamente a partes específicas do código
- Ir para linha: clique do meio do mouse (também é possível
Ctrl+clique) - Entrar na função: clique duplo na chamada de função para entrar (
Ctrl+Alt+cliquetambém é possível) - Opções adicionais: recursos extras podem ser explorados no menu de clique com o botão direito
- Ir para linha: clique do meio do mouse (também é possível
Scratchpad
- Permite fixar os valores das variáveis em um momento específico para comparação e análise
- Ajuda a analisar problemas comparando visualmente o fluxo de execução do código
Comandos da CLI do CodeTracer
ct run <application>- executa o programa e grava automaticamentect record <application>- cria um arquivo de tracect replay- reproduz o arquivo de trace criadoct replay <program-name>- carrega o registro da última execuçãoct replay --id=<trace-id>- executa com um ID de trace específicoct replay --trace-folder=<trace-folder>- executa o arquivo de trace dentro de uma pasta específicact help / ct --help- mostra os comandos disponíveisct version- mostra a versão atual
Atalhos de teclado
- Os atalhos padrão são familiares para usuários do Visual Studio™
- Os recursos reversos das funções de depuração existentes são oferecidos com a tecla
Shift(F10= "próximo passo",Shift+F10= "passo anterior") - É possível personalizar os atalhos editando o arquivo
~/.config/codetracer/.config.yml
1 comentários
Comentários do Hacker News
Muito legal. Há muito tempo tive a chance de pedir recursos aos designers de processadores da Intel
O suporte a Noir faz sentido porque o rastreamento de execução é especialmente valioso em provas ZK
Se você usa Clojure ou ClojureScript, recomendo dar uma olhada no FlowStorm
Noir é uma linguagem específica de domínio para sistemas de prova SNARK
Fico curioso sobre por que o CodeTracer foi escrito em duas linguagens
Gostei muito. Sempre quis algo assim
Parece legal, mas em sistemas de produção os arquivos de rastreamento vão crescer muito rápido
Obrigado por fortalecer o ecossistema Nim
Muito animado com isso. Já doei no Open Collective
Parabéns pelo lançamento. Vocês fizeram um trabalho excelente até aqui