Treffer: Efficient and Expressive Bytecode-Level Instrumentation for Java Programs

Title:
Efficient and Expressive Bytecode-Level Instrumentation for Java Programs
Contributors:
Compiler Optimization and Run-time Systems (CORSE), Centre Inria de l'Université Grenoble Alpes, Institut National de Recherche en Informatique et en Automatique (Inria)-Institut National de Recherche en Informatique et en Automatique (Inria)-Laboratoire d'Informatique de Grenoble (LIG), Institut National de Recherche en Informatique et en Automatique (Inria)-Centre National de la Recherche Scientifique (CNRS)-Université Grenoble Alpes (UGA)-Institut polytechnique de Grenoble - Grenoble Institute of Technology (Grenoble INP), Université Grenoble Alpes (UGA)-Centre National de la Recherche Scientifique (CNRS)-Université Grenoble Alpes (UGA)-Institut polytechnique de Grenoble - Grenoble Institute of Technology (Grenoble INP), Université Grenoble Alpes (UGA), Laboratoire d'Informatique de Grenoble (LIG), Université Grenoble Alpes - UFR Informatique, mathématiques et mathématiques appliquées (UGA UFR IM2AG)
Publisher Information:
CCSD, 2022.
Publication Year:
2022
Collection:
collection:UGA
collection:CNRS
collection:INRIA
collection:INPG
collection:INRIA-RHA
collection:LIG
collection:INRIA_TEST
collection:LIG_SRCPR
collection:TESTALAIN1
collection:INRIA2
collection:LIG-SRCPR-CORSE
collection:INRIA-RENGRE
collection:UGA-EPE
collection:LIG_SIDCH
collection:TEST-UGA
Original Identifier:
ARXIV: 2106.01115
HAL: hal-03533152
Document Type:
E-Ressource preprint<br />Preprints<br />Working Papers
Language:
French
Relation:
info:eu-repo/semantics/altIdentifier/arxiv/2106.01115
Rights:
info:eu-repo/semantics/OpenAccess
Accession Number:
edshal.hal.03533152v1
Database:
HAL

Weitere Informationen

We present an efficient and expressive tool for the instrumentation of Java programs at the bytecodelevel. BISM (Bytecode-Level Instrumentation for Software Monitoring) is a lightweight 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.