Sobre el proyecto
BTrace instrumenta dinámicamente aplicaciones Java en ejecución, inyectando código de trazado en tiempo de ejecución para que puedas observar el comportamiento sin reiniciar ni recompilar el objetivo. El proyecto enfatiza la seguridad en producción: los scripts se verifican y el README afirma que los scripts verificados no pueden bloquear la aplicación. La sobrecarga se describe como baja, lograda mediante inyección de bytecode.
Runtimes compatibles: BTrace 3.0 se ejecuta en Java 8–25+, con la ejecución contra JVM anteriores a Java 17 obsoleta (aún funcional en 3.x con una advertencia; eliminación prevista en 4.0). Una guía de migración cubre la actualización desde 2.x.
Capacidades destacadas en el README:
- Sondas para entrada/salida de métodos, tiempos, acceso a campos y asignaciones.
- Medición de métodos, seguimiento de excepciones y sondas personalizadas escritas como clases Java anotadas (por ejemplo, @OnMethod con parámetros @Self y @Duration).
- Oneliners estilo DTrace para depuración rápida: ubicaciones (@entry, @return, @error), acciones (print, count, time, stack), filtros (umbrales de duración, comparaciones de argumentos) y patrones de clase/método con comodines o expresiones regulares.
Las opciones de instalación y empaquetado incluyen JBang (recomendado, sin instalación con un catálogo publicado), SDKMan, archivos binarios manuales, paquetes RPM/DEB e imágenes Docker (variantes Debian, Alpine, Distroless). Una compilación de agente JAR fat admite el despliegue en un solo JAR para entornos como Spark, Hadoop y Kubernetes, con un plugin de Gradle (io.btrace.fat-agent) para incrustar extensiones seleccionadas. Un plugin de compilación de scripts de Maven reside en un repositorio separado.
Las extensiones añaden funcionalidad a través de una API de arranque estable con implementaciones aisladas. El mecanismo heredado libs/profiles se ha eliminado; las integraciones deben empaquetarse como extensiones. Un modelo de permisos distingue permisos predeterminados (MESSAGING, AGGREGATION, JFR_EVENTS, PROFILING), permisos estándar (FILE_READ, SYSTEM_PROPS, THREAD_INFO, MEMORY_INFO) y permisos privilegiados (FILE_WRITE, NETWORK, THREADS, NATIVE, EXEC, REFLECTION, CLASSLOADER, UNLIMITED_MEMORY). Las concesiones privilegiadas se establecen mediante opciones del agente o un archivo de políticas; las listas de permitir/denegar controlan la vinculación de extensiones, y las implementaciones bloqueadas recurren a SHIMs para que las sondas continúen de forma segura. La CLI btracex inspecciona y gestiona extensiones y políticas, incluida una interfaz de terminal interactiva para explorar y alternar el estado de permitir/denegar.
La documentación incluye una referencia rápida, un tutorial de introducción, un tutorial completo, una guía de oneliners, una guía de desarrollo de extensiones y un centro de documentación. Los canales comunitarios son Slack, Gitter y GitHub Issues. Las contribuciones requieren firmar el Oracle Contributor Agreement. Licenciado bajo Apache 2.0; construido con ASM, JCTools y hppcrt.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.