Debugging Aspect-Enabled Programs

The ability to debug programs composed using aspect-oriented programming (AOP) techniques is critical to the adoption of AOP. Nevertheless, many AOP systems lack adequate support for debugging, making it difficult to diagnose faults and understand the program's composition and control flow. We present an AOP debug model that characterizes AOP-specific program composition techniques and AOP-specific program behaviors, and relates them to the AOP-specific faults they induce. We specify debugging criteria that we feel all AOP systems should support and compare how several AOP systems measure up to this ideal. We explain why AOP composition techniques, particularly dynamic and binary weaving, hinder source-level debugging, and how results from related research on debugging optimized code help solve the problem. We also present Wicca, the first dynamic AOP system to support full source-level debugging. We demonstrate how Wicca's powerful interactive debugging features allow a programmer to quickly diagnose faults in the base program behavior or AOP-specific behavior.

[1]  William E. Riddle,et al.  Software technology maturation , 1985, ICSE '85.

[2]  Alfred V. Aho,et al.  Statement Annotations for Fine-Grained Advising , 2006, RAM-SE.

[3]  Steven K. Feiner,et al.  Multi-Language Edit-and-Continue for the Masses , 2005 .

[4]  Mathias Weske,et al.  Object-Oriented and Internet-Based Technologies , 2004, Lecture Notes in Computer Science.

[5]  Michael Haupt,et al.  Axon | Dynamic AOP through Runtime Inspection and Monitoring , 2003 .

[6]  John L. Hennessy,et al.  Symbolic Debugging of Optimized Code , 1982, TOPL.

[7]  Mario Südholt,et al.  An expressive aspect language for system applications with Arachne , 2005, AOSD '05.

[8]  簡聰富,et al.  物件導向軟體之架構(Object-Oriented Software Construction)探討 , 1989 .

[9]  Jørgen Lindskov Knudsen ECOOP 2001 — Object-Oriented Programming , 2001, Lecture Notes in Computer Science.

[10]  Daniel P. Friedman,et al.  Aspect-Oriented Programming is Quantification and Obliviousness , 2000 .

[11]  Jim Hugunin,et al.  Advice weaving in AspectJ , 2004, AOSD '04.

[12]  Manfred Broy,et al.  Software Pioneers: Contributions to Software Engineering , 2002 .

[13]  Jan F. Prins,et al.  Debugging programs after structure-changing transformation , 1998 .

[14]  Siobhán Clarke,et al.  SourceWeave.NET: Cross-Language Aspect-Oriented Programming , 2004, GPCE.

[15]  William G. Griswold,et al.  An Overview of AspectJ , 2001, ECOOP.

[16]  G. Alonso,et al.  A Dynamic AOP-Engine for . NET ∗ , 2004 .

[17]  Wilson C. Hsieh,et al.  Runtime aspect weaving through metaprogramming , 2002, AOSD '02.

[18]  Ondrej Lhoták,et al.  Optimising aspectJ , 2005, PLDI '05.

[19]  Michael Haupt,et al.  Micro-measurements for Dynamic Aspect-Oriented Systems , 2004, Net.ObjectDays.

[20]  Gustavo Alonso,et al.  Dynamic AOP with PROSE , 2005, CAiSE Workshops.

[21]  James M. Bieman,et al.  Towards the Systematic Testing of Aspect-Oriented Programs , 2004 .

[22]  Michael R. Lowry,et al.  Explaining synthesized software , 1998, Proceedings 13th IEEE International Conference on Automated Software Engineering (Cat. No.98EX239).

[23]  William G. Griswold,et al.  Exploiting the map metaphor in a tool for software evolution , 2001, Proceedings of the 23rd International Conference on Software Engineering. ICSE 2001.

[24]  Robert E. Filman,et al.  What Is Aspect-Oriented Programming , 2001 .

[25]  Gregor Kiczales,et al.  Aspect-oriented programming , 1996, CSUR.

[26]  C. A. R. Hoare,et al.  Assertions: A Personal Perspective , 2003, IEEE Ann. Hist. Comput..

[27]  Alfred V. Aho,et al.  Debugging Woven Code , 2006 .

[28]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.

[29]  Susan L. Graham,et al.  OPTVIEW: a new approach for examining optimized code , 1998, PASTE '98.

[30]  Craig Chambers,et al.  Debugging optimized code with dynamic deoptimization , 1992, PLDI '92.

[31]  Tzilla Elrad,et al.  Aspect-oriented programming: Introduction , 2001, CACM.

[32]  Polle Zellweger Lnteractiv~ source-level debugging of optimized programs , 1984 .

[33]  Polle Trescott Zellweger Interactive source-level debugging for optimized programs (compilation, high-level) , 1984 .

[34]  Mary Lou Soffa,et al.  Tdb: a source-level debugger for dynamically translated programs , 2005, AADEBUG'05.

[35]  Jonas Boner AspectWerkz - dynamic AOP for Java , 2004 .

[36]  Michael Eichberg,et al.  An execution layer for aspect-oriented programming languages , 2005, VEE '05.

[37]  Cristina V. Lopes,et al.  Aspect-Oriented Programming , 1997, ECOOP.

[38]  Cristina V. Lopes,et al.  A study on exception detection and handling using aspect-oriented programming , 2000, Proceedings of the 2000 International Conference on Software Engineering. ICSE 2000 the New Millennium.