这个项目能做什么

BTrace 动态地对运行中的 Java 应用进行插桩,在运行时注入追踪代码,因此你无需重启或重新编译目标即可观察其行为。该项目强调生产安全:脚本会经过验证,README 指出经过验证的脚本不会导致应用崩溃。其开销被描述为较低,这是通过字节码注入实现的。 支持的运行时:BTrace 3.0 可在 Java 8–25+ 上运行,针对低于 Java 17 的 JVM 运行已被弃用(在 3.x 中仍可用,但会发出警告;计划在 4.0 中移除)。迁移指南涵盖了从 2.x 升级的内容。 README 中重点介绍的能力: - 用于方法进入/退出、计时、字段访问和分配的探针。 - 方法计时、异常追踪,以及以带注解的 Java 类编写的自定义探针(例如带有 @Self 和 @Duration 参数的 @OnMethod)。 - 用于快速调试的 DTrace 风格单行命令:位置(@entry、@return、@error)、动作(print、count、time、stack)、过滤器(持续时间阈值、参数比较),以及通配符或正则表达式类/方法模式。 安装和打包选项包括 JBang(推荐,零安装并提供已发布的目录)、SDKMan、手动二进制归档、RPM/DEB 包,以及 Docker 镜像(Debian、Alpine、Distroless 变体)。fat agent JAR 构建支持单 JAR 部署,适用于 Spark、Hadoop 和 Kubernetes 等环境,并提供 Gradle 插件(io.btrace.fat-agent)用于嵌入选定的扩展。Maven 脚本编译插件位于单独的代码仓库中。 扩展通过稳定的 bootstrap API 添加功能,并采用隔离的实现。旧版 libs/profiles 机制已被移除;集成应以扩展形式打包。权限模型区分默认权限(MESSAGING、AGGREGATION、JFR_EVENTS、PROFILING)、标准权限(FILE_READ、SYSTEM_PROPS、THREAD_INFO、MEMORY_INFO)和特权权限(FILE_WRITE、NETWORK、THREADS、NATIVE、EXEC、REFLECTION、CLASSLOADER、UNLIMITED_MEMORY)。特权授予通过 agent 选项或策略文件设置;允许/拒绝列表控制扩展链接,被阻止的实现会回退到 SHIM,以便探针继续安全运行。btracex CLI 可检查和管理的扩展与策略,包括用于浏览和切换允许/拒绝状态的交互式终端 UI。 文档包括快速参考、入门教程、完整教程、单行命令指南、扩展开发指南和文档中心。社区渠道为 Slack、Gitter 和 GitHub Issues。贡献需要签署 Oracle 贡献者协议。采用 Apache 2.0 许可;使用 ASM、JCTools 和 hppcrt 构建。