skip to main content
10.1145/2162037.2162046acmconferencesArticle/Chapter ViewAbstractPublication PagesmodularityConference Proceedingsconference-collections
abstract

DiSL: an extensible language for efficient and comprehensive dynamic program analysis

Published: 27 March 2012 Publication History

Abstract

Dynamic program analysis tools support numerous software engineering tasks, including profiling, debugging, and reverse engineering. Prevailing techniques for building dynamic analysis tools are based on low-level abstractions that make tool development tedious, error-prone, and expensive. To simplify the development of dynamic analysis tools, some researchers promoted the use of aspect-oriented programming (AOP). However, as mainstream AOP languages have not been designed to meet the requirements of dynamic analysis, the success of using AOP in this context remains limited. For example, in AspectJ, join points that are important for dynamic program analysis (e.g., the execution of bytecodes or basic blocks of code) are missing, access to reflective dynamic join~point information is expensive, data passing between woven advice in local variables is not supported, and the mixing of low-level bytecode instrumentation and high-level AOP code is not foreseen. In this talk, we present DiSL [1], a new domain-specific aspect language for bytecode instrumentation. DiSL uses Java annotation syntax such that standard Java compilers can be used for compiling DiSL code. The language features an open join point model, novel constructs inspired by weave-time evaluation of conditional join~points and by staged execution, and access to custom static and dynamic context information. Moreover, the DiSL weaver guarantees complete bytecode coverage. We have implemented several dynamic analysis tools in DiSL, including profilers for the inter- and intra-procedural control flow, debuggers, dynamic metrics collectors integrated in the Eclipse IDE to augment the static source views with dynamic information, and tools for workload characterization. These tools are concise and perform equally well as implementations using low-level techniques. DiSL has also been conceived as an intermediate language for future domain-specific analysis languages, as well as for AOP languages.

Reference

[1]
L. Marek, A. Villazón, Y. Zheng, D. Ansaloni, W. Binder, and Z. Qi. DiSL: a domain-specific language for bytecode instrumentation. In AOSD '12: Proceedings of the 11th International Conference on Aspect-Oriented Software Development, Mar. 2012.

Cited By

View all
  • (2022)PerformERL: a performance testing framework for erlangDistributed Computing10.1007/s00446-022-00429-735:5(439-454)Online publication date: 1-Aug-2022
  • (2017)Function call interception techniquesSoftware: Practice and Experience10.1002/spe.250148:3(385-401)Online publication date: 16-May-2017
  • (2015)Generic Instrumentation and Monitoring Description for Software Performance EvaluationProceedings of the 6th ACM/SPEC International Conference on Performance Engineering10.1145/2668930.2695525(203-206)Online publication date: 28-Jan-2015
  • Show More Cited By

Index Terms

  1. DiSL: an extensible language for efficient and comprehensive dynamic program analysis

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    cover image ACM Conferences
    DSAL '12: Proceedings of the seventh workshop on Domain-Specific Aspect Languages
    March 2012
    44 pages
    ISBN:9781450311281
    DOI:10.1145/2162037

    Sponsors

    In-Cooperation

    • AOSA: Aspect-Oriented Software Association

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    Published: 27 March 2012

    Permissions

    Request permissions for this article.

    Check for updates

    Author Tags

    1. JVM
    2. aspect-oriented programming
    3. bytecode instrumentation
    4. dynamic program analysis

    Qualifiers

    • Abstract

    Conference

    AOSD '12

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)2
    • Downloads (Last 6 weeks)0
    Reflects downloads up to 05 Mar 2025

    Other Metrics

    Citations

    Cited By

    View all
    • (2022)PerformERL: a performance testing framework for erlangDistributed Computing10.1007/s00446-022-00429-735:5(439-454)Online publication date: 1-Aug-2022
    • (2017)Function call interception techniquesSoftware: Practice and Experience10.1002/spe.250148:3(385-401)Online publication date: 16-May-2017
    • (2015)Generic Instrumentation and Monitoring Description for Software Performance EvaluationProceedings of the 6th ACM/SPEC International Conference on Performance Engineering10.1145/2668930.2695525(203-206)Online publication date: 28-Jan-2015
    • (2015)Investigating Instrumentation Techniques for ESB Runtime VerificationSoftware Engineering and Formal Methods10.1007/978-3-319-22969-0_7(99-107)Online publication date: 21-Aug-2015
    • (2015)Supporting Performance Awareness in Autonomous EnsemblesSoftware Engineering for Collective Autonomic Systems10.1007/978-3-319-16310-9_8(291-322)Online publication date: 2015
    • (2014)On the limits of modeling generational garbage collector performanceProceedings of the 5th ACM/SPEC international conference on Performance engineering10.1145/2568088.2568097(15-26)Online publication date: 22-Mar-2014
    • (2012)Performance Awareness in Component SystemsProceedings of the 2012 IEEE 36th Annual Computer Software and Applications Conference Workshops10.1109/COMPSACW.2012.96(514-519)Online publication date: 16-Jul-2012

    View Options

    Login options

    View options

    PDF

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader

    Figures

    Tables

    Media

    Share

    Share

    Share this Publication link

    Share on social media