- Depurador de viaje en el tiempo fácil de usar que admite varios lenguajes de programación
- Registra la ejecución del programa para generar archivos de traza independientes y compartibles, y permite moverse hacia adelante y hacia atrás en la ejecución dentro de un entorno GUI mientras se consulta el historial de cada ubicación de memoria
- Ventajas de la depuración de viaje en el tiempo
- Permite resolver con facilidad bugs difíciles de reproducir: si se cuenta con una grabación de la ejecución en la que ocurrió el bug, es posible identificar la causa en menos de 30 minutos
- Resolver bugs es más fácil cuando se conoce el origen de un valor
- Si se produce una salida inesperada en el programa, se puede hacer clic en ese evento para ver de inmediato el punto donde se originó el problema
- CodeTracer rastrea dónde se generó ese valor y ayuda a encontrar la causa raíz del bug con solo unos pocos movimientos
- Se puede explorar libremente moviéndose hacia atrás y hacia adelante en cualquier momento de la ejecución del programa
- El trazado usa un formato abierto, y hay proyectos en curso para dar soporte a lenguajes como Ruby y Python
- Integración planeada con el backend de RR para admitir depuración de lenguajes de programación de sistemas como C/C++, Rust, Nim, D, Zig, Go, Fortran y FreePascal
Funciones principales de CodeTracer
Depuración omnisciente (Omniscience)
- Permite ver al instante los valores pasados y futuros de las variables en una línea específica de código durante la ejecución
- Facilita explorar los cambios en los valores de variables dentro de bucles
- Distingue claramente entre el código ejecutado y el que no se ejecutó
Tracepoints
- Permiten ver al instante los cambios en los valores de las variables del programa sin ejecutar código adicional
- Facilitan agregar condiciones, llamadas a funciones, salida de datos y más para depurar
Call Trace
- Ofrece no solo un stack trace simple, sino el árbol completo de llamadas a funciones de toda la ejecución del programa
- Se puede explorar fácilmente mediante filtrado y ordenamiento
Explorador de estado e historial (State and History Explorer)
- Permite rastrear el historial de cambios de valor de todas las variables
- Permite saltar de inmediato al punto del código donde cambió el valor de una variable
- Rastrea automáticamente el valor original de variables copiadas para facilitar el análisis de bugs
Registro de eventos (Event Log)
- Presenta en orden cronológico los eventos importantes del programa
- Al hacer clic en un evento, se puede ir de inmediato al código de ese momento
Salida de terminal (Terminal Output)
- Reproduce y registra la salida de
stdout y stderr como si fuera una terminal, para revisar la salida del programa grabado
- Al hacer clic, se puede ir a la ubicación exacta del código donde se produjo esa salida
Navegación con mouse (Mouse Stepping)
- Permite moverse de inmediato a partes específicas del código usando el mouse
- Ir a línea: clic del botón central (
Ctrl+clic también disponible)
- Entrar a función: doble clic en una llamada de función para entrar (
Ctrl+Alt+clic también disponible)
- Opciones adicionales: se pueden explorar funciones extra desde el menú de clic derecho
Scratchpad
- Permite fijar los valores de variables en un momento específico para compararlos y analizarlos
- Ayuda a analizar problemas comparando visualmente el flujo de ejecución del código
Comandos CLI de CodeTracer
ct run <application> - Ejecuta el programa y lo graba automáticamente
ct record <application> - Genera un archivo de traza
ct replay - Reproduce el archivo de traza generado
ct replay <program-name> - Carga el último registro de ejecución
ct replay --id=<trace-id> - Ejecuta con un ID de traza específico
ct replay --trace-folder=<trace-folder> - Ejecuta un archivo de traza dentro de una carpeta específica
ct help / ct --help - Muestra los comandos disponibles
ct version - Muestra la versión actual
Atajos de teclado
- Los atajos predeterminados siguen un estilo familiar para usuarios de Visual Studio™
- Las funciones inversas de depuración se ofrecen junto con la tecla
Shift (F10 = "siguiente paso", Shift+F10 = "paso anterior")
- Es posible personalizar los atajos editando el archivo
~/.config/codetracer/.config.yml
1 comentarios
Comentarios en Hacker News
Está genial. Hace mucho tiempo tuve la oportunidad de pedir funciones a los diseñadores de procesadores de Intel
El soporte para Noir tiene sentido porque las trazas de ejecución son especialmente valiosas en pruebas ZK
Si usas Clojure o ClojureScript, recomiendo revisar FlowStorm
Noir es un lenguaje específico de dominio para sistemas de pruebas SNARK
Me pregunto por qué escribieron CodeTracer en dos lenguajes
Me encanta. Siempre quise algo así
Se ve genial, pero en sistemas de producción los archivos de traza van a crecer muy rápido
Gracias por construir el ecosistema de Nim
Estoy muy entusiasmado. Ya doné en Open Collective
Felicidades por el lanzamiento. Han hecho un trabajo excelente hasta ahora