A safe, dynamic tracing tool for Java applications that injects code at runtime without restarts.
BTrace is a dynamic tracing tool for Java that allows developers to inject diagnostic and monitoring code into running Java applications at runtime. It solves the problem of debugging and profiling production systems without requiring application restarts or code changes, enabling real-time insight into performance bottlenecks and errors.
Java developers, DevOps engineers, and SREs who need to monitor, debug, and profile live Java applications in production or development environments.
Developers choose BTrace for its ability to safely trace applications without downtime, its low overhead, and its flexible probing capabilities that allow detailed inspection of method execution, exceptions, and performance metrics in real-time.
BTrace - a safe, dynamic tracing tool for the Java platform
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Allows attaching to running JVMs and injecting probes without restarting, enabling real-time diagnostics in production, as emphasized in the README's key features.
Scripts are verified to prevent application crashes, ensuring stability during tracing, which aligns with the project's philosophy of non-intrusiveness.
Supports tracing method entry/exit, timings, field access, and exceptions, providing detailed insights without code changes, as shown in the oneliner examples.
Uses bytecode injection to minimize impact, making it suitable for live environments, though overhead can vary with probe complexity.
Licensed under GPLv2 with Classpath Exception, which may complicate commercial use or integration in proprietary systems due to copyleft requirements.
While JBang simplifies installation, manual setup or building from source can be complex, and writing custom probes requires understanding of BTrace's syntax and limitations.
Primarily designed for Java; support for other JVM languages may be incomplete or require workarounds, as the README focuses on Java-specific features.