Introduction to dynamic program analysis with DiSL

DiSL is a new domain-specific language for bytecode instrumentation with complete bytecode coverage. It reconciles expressiveness and efficiency of low-level bytecode manipulation libraries with a convenient, high-level programming model inspired by aspect-oriented programming. This paper summarizes the language features of DiSL and gives a brief overview of several dynamic program analysis tools that were ported to DiSL. DiSL is available as open-source under the Apache 2.0 license.

[1]  Grigore Rosu,et al.  jPredictor: a predictive runtime analysis tool for java , 2008, ICSE '08.

[2]  Oscar Nierstrasz,et al.  Exploiting Dynamic Information in IDEs Improves Speed and Correctness of Software Maintenance Tasks , 2012, IEEE Transactions on Software Engineering.

[3]  Mira Mezini,et al.  Turbo DiSL: Partial Evaluation for High-Level Bytecode Instrumentation , 2012, TOOLS.

[4]  Walter Binder,et al.  Towards a domain-specific aspect language for dynamic program analysis: position paper , 2011, DSAL@AOSD.

[5]  Walter Binder,et al.  Platform-independent profiling in a virtual execution environment , 2009 .

[6]  Hidehiko Masuhara,et al.  SCoPE: an AspectJ compiler for supporting user-defined analysis-based pointcuts , 2007, AOSD.

[7]  Walter Binder,et al.  DiSL: a domain-specific language for bytecode instrumentation , 2012, AOSD.

[8]  Robert B. France,et al.  An aspect oriented model driven framework , 2005, Ninth IEEE International EDOC Enterprise Computing Conference (EDOC'05).

[9]  Eric Bodden,et al.  Aspect-Oriented Race Detection in Java , 2010, IEEE Transactions on Software Engineering.

[10]  Walter Binder,et al.  A comprehensive toolchain for workload characterization across JVM languages , 2013, PASTE '13.

[11]  Ondrej Lhoták,et al.  abc: an extensible AspectJ compiler , 2005, AOSD '05.

[12]  Walter Binder,et al.  Polymorphic bytecode instrumentation , 2011, AOSD '11.

[13]  Matthias Hauswirth,et al.  Catch me if you can: performance bug detection in the wild , 2011, OOPSLA '11.

[14]  Walter Binder,et al.  Flexible and efficient profiling with aspect‐oriented programming , 2011, Concurr. Comput. Pract. Exp..

[15]  Paul H. J. Kelly,et al.  Profiling with AspectJ , 2007 .

[16]  Petr Tuma,et al.  Productive Development of Dynamic Program Analysis Tools with DiSL , 2013, 2013 22nd Australian Software Engineering Conference.

[17]  Shigeru Chiba,et al.  Load-Time Structural Reflection in Java , 2000, ECOOP.

[18]  Gregor Kiczales,et al.  Aspect-oriented programming , 2001, ESEC/FSE-9.

[19]  Atanas Rountev,et al.  Precise memory leak detection for java software using container profiling , 2013, 2008 ACM/IEEE 30th International Conference on Software Engineering.

[20]  Paola Inverardi,et al.  Model-based performance prediction in software development: a survey , 2004, IEEE Transactions on Software Engineering.

[21]  M. Wimmer,et al.  A Survey on Aspect-Oriented Modeling Approaches , 2006 .

[22]  Michael D. Ernst,et al.  ReCrash: Making Software Failures Reproducible by Preserving Object States , 2008, ECOOP.

[23]  Mira Mezini,et al.  new Scala() instance of Java: a comparison of the memory behaviour of Java and Scala programs , 2012, ISMM '12.

[24]  Walter Binder,et al.  Platform‐independent profiling in a virtual execution environment , 2009, Softw. Pract. Exp..

[25]  Laurie J. Hendren,et al.  Optimizing Java Bytecode Using the Soot Framework: Is It Feasible? , 2000, CC.

[26]  Shigeru Chiba,et al.  Josh: an open AspectJ-like language , 2004, AOSD '04.

[27]  Walter Binder,et al.  @J: towards rapid development of dynamic analysis tools for the Java Virtual Machine , 2009, VMIL '09.

[28]  Cristina V. Lopes,et al.  Aspect-oriented programming , 1999, ECOOP Workshops.

[29]  R. France,et al.  Aspect-oriented approach to early design modelling , 2004, IEE Proc. Softw..

[30]  Mira Mezini,et al.  JP2: Call-site aware calling context profiling for the Java Virtual Machine , 2014, Sci. Comput. Program..

[31]  Petr Tuma,et al.  Java Bytecode Instrumentation Made Easy: The DiSL Framework for Dynamic Program Analysis , 2012, APLAS.

[32]  Klaus Ostermann,et al.  A Meta-Aspect Protocol for Developing Dynamic Analyses , 2010, RV.

[33]  Amer Diwan,et al.  The DaCapo benchmarks: java benchmarking development and analysis , 2006, OOPSLA '06.

[34]  Karl J. Lieberherr,et al.  A case for statically executable advice: checking the law of demeter with AspectJ , 2003, AOSD '03.

[35]  James R. Larus,et al.  Exploiting hardware performance counters with flow and context sensitive profiling , 1997, PLDI '97.

[36]  Michael Leuschel,et al.  Partial Evaluation of Pointcuts , 2007, PADL.

[37]  Stephen N. Freund,et al.  The RoadRunner Dynamic Analysis Framework for Concurrent Programs , 2010, PASTE '10.