Back to overview

Introduction to Dynamic Program Analysis with DiSL

Type of publication Peer-reviewed
Publikationsform Original article (peer-reviewed)
Publication date 2015
Author Marek Lukáš, Zheng Yudi, Ansaloni Danilo, Bulej Lubomír, Sarimbekov Aibek, Binder Walter, Tůma Petr,
Project FAN: Foundations of dynamic program ANalysis
Show all

Original article (peer-reviewed)

Journal Science of Computer Programming
Volume (Issue) 98(1)
Page(s) 100 - 115
Title of proceedings Science of Computer Programming
DOI 10.1016/j.scico.2014.01.003


Dynamic program analysis (DPA) tools assist in many software engineering and development tasks, such as profiling, program comprehension, and performance model construction and calibration. On the Java platform, many DPA tools are implemented either using aspect-oriented programming (AOP), or rely on bytecode instrumentation to modify the base program code. The pointcut/advice model found in AOP enables rapid tool development, but does not allow expressing certain instrumentations due to limitations of mainstream AOP languages—developers thus use bytecode manipulation to gain more expressiveness and performance. However, while the existing bytecode manipulation libraries handle some low-level details, they still make tool development tedious and error-prone. Targeting this issue, we provide the first complete presentation of DiSL, an open-source instrumentation framework that reconciles the conciseness of the AOP pointcut/advice model and the expressiveness and performance achievable with bytecode manipulation libraries. Specifically, we extend our previous work to provide an overview of the DiSL architecture, advanced features, and the programming model. We also include case studies illustrating successful deployment of DiSL-based DPA tools.