Efficient and Expressive Bytecode-Level Instrumentation for Java Programs
We present an efficient and expressive tool for the instrumentation of Java programs at the bytecode-level. BISM (Bytecode-Level Instrumentation for Software Monitoring) is a light-weight Java bytecode instrumentation tool that features an expressive high-level control-flow-aware instrumentation lan...
Gespeichert in:
Hauptverfasser: | , , , |
---|---|
Format: | Artikel |
Sprache: | eng |
Schlagworte: | |
Online-Zugang: | Volltext bestellen |
Tags: |
Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
|
Zusammenfassung: | We present an efficient and expressive tool for the instrumentation of Java
programs at the bytecode-level. BISM (Bytecode-Level Instrumentation for
Software Monitoring) is a light-weight Java bytecode instrumentation tool that
features an expressive high-level control-flow-aware instrumentation language.
The language is inspired by the aspect-oriented programming paradigm in
modularizing instrumentation into separate transformers, that encapsulate
joinpoint selection and advice inlining. BISM allows capturing joinpoints
ranging from bytecode instructions to methods execution and provides
comprehensive static and dynamic context information. It runs in two
instrumentation modes: build-time and load-time. BISM also provides a mechanism
to compose transformers and automatically detect their collision in the base
program. Transformers in a composition can control the visibility of their
advice and other instructions from the base program. We show several example
applications for BISM and demonstrate its effectiveness using three
experiments: a security scenario, a financial transaction system, and a general
runtime verification case. The results show that BISM instrumentation incurs
low runtime and memory overheads. |
---|---|
DOI: | 10.48550/arxiv.2106.01115 |