Efficient and Expressive Bytecode-Level Instrumentation for Java Programs - Inria - Institut national de recherche en sciences et technologies du numérique Accéder directement au contenu
Pré-Publication, Document De Travail Année : 2021

Efficient and Expressive Bytecode-Level Instrumentation for Java Programs

Résumé

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.
Fichier principal
Vignette du fichier
arxiv-2106.pdf (556.03 Ko) Télécharger le fichier
Origine : Fichiers produits par l'(les) auteur(s)

Dates et versions

hal-03533152 , version 1 (20-01-2022)

Identifiants

Citer

Chukri Soueidi, Marius Monnier, Ali Kassem, Yliès Falcone. Efficient and Expressive Bytecode-Level Instrumentation for Java Programs. 2022. ⟨hal-03533152⟩
53 Consultations
239 Téléchargements

Altmetric

Partager

Gmail Facebook X LinkedIn More