Efficient and Expressive Bytecode-Level Instrumentation for Java Programs

06/02/2021
by   Chukri Soueidi, et al.
0

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.

READ FULL TEXT

page 26

page 28

research
07/08/2020

BISM: Bytecode-Level Instrumentation for Software Monitoring

BISM (Bytecode-Level Instrumentation for Software Monitoring) is a light...
research
07/27/2017

Control and Data Flow Execution of Java Programs

Since decade understanding of programs has become a compulsory task for ...
research
06/07/2018

Specification of State and Time Constraints for Runtime Verification of Functions

Techniques for runtime verification often utilise specification language...
research
05/27/2018

A Formal Model of the Safety-Critical Java Level 2 Paradigm

Safety-Critical Java (SCJ) introduces a new programming paradigm for app...
research
03/18/2015

Exploration of the scalability of LocFaults approach for error localization with While-loops programs

A model checker can produce a trace of counterexample, for an erroneous ...
research
03/18/2015

Exploration of the scalability of LocFaults

A model checker can produce a trace of counterexample, for an erroneous ...
research
06/14/2017

Understanding and Analyzing Java Reflection

Java reflection has been increasingly used in a wide range of software. ...

Please sign up or login with your details

Forgot password? Click here to reset