arXivDaily arXiv每日学术速递 周一至周五更新
arXiv 2106.01115cs.PLcs.SE
收藏

面向Java程序的高效和可表达的字节码级插装

Efficient and Expressive Bytecode-Level Instrumentation for Java Programs

Chukri Soueidi, Marius Monnier, Ali Kassem, Yliès Falcone

摘要:

我们提出了一个有效的和富有表现力的工具,在字节码级的Java程序的仪器。BISM(Bytecode-Level Instrumentation for Software Monitoring)是一个轻量级的Java字节码插装工具,它具有一种表达性高的高级控制流感知插装语言。该语言受到面向方面编程范例的启发,将插装模块化为单独的Transformers,封装连接点选择和内联建议。BISM允许捕获从字节码指令到方法执行的连接点,并提供全面的静态和动态上下文信息。它以两种检测模式运行:构建时和加载时。BISM还提供了一种机制来组合Transformers并自动检测它们在基本程序中的冲突。组合中的Transformers可以控制它们的通知和来自基本程序的其他指令的可见性。我们展示了BISM的几个示例应用程序,并使用三个实验证明其有效性:安全场景,金融交易系统和一般运行时验证案例。结果表明,BISM插装引起低的运行时间和内存开销。

英文摘要:

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.

机构、总结、中文摘要均由AI分析而来,可能存在错误,请以论文正文为准。

↑