Communications of the ACM
Coca: an automated debugger for C
Proceedings of the 21st international conference on Software engineering
abc: an extensible AspectJ compiler
Proceedings of the 4th international conference on Aspect-oriented software development
Adding trace matching with free variables to AspectJ
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Bugdel: An Aspect-Oriented Debugging System
APSEC '05 Proceedings of the 12th Asia-Pacific Software Engineering Conference
Debugging with control-flow breakpoints
Proceedings of the 6th international conference on Aspect-oriented software development
Incremental analysis of interference among aspects
Proceedings of the 7th workshop on Foundations of aspect-oriented languages
Dependent advice: a general approach to optimizing history-based aspects
Proceedings of the 8th ACM international conference on Aspect-oriented software development
Detecting unanticipated aspect interferences at runtime with compositional intentions
Proceedings of the Workshop on AOP and Meta-Data for Software Evolution
Software debugging, testing, and verification
IBM Systems Journal
Composing aspects with aspects
Proceedings of the 9th International Conference on Aspect-Oriented Software Development
Stateful breakpoints: a practical approach to defining parameterized runtime monitors
Proceedings of the 19th ACM SIGSOFT symposium and the 13th European conference on Foundations of software engineering
Static analysis of aspect interaction and composition in component models
Proceedings of the 10th ACM international conference on Generative programming and component engineering
A fine-grained debugger for aspect-oriented programming
Proceedings of the 11th annual international conference on Aspect-oriented Software Development
Instance pointcuts for program comprehension
Proceedings of the 1st workshop on Comprehension of complex systems
Hi-index | 0.00 |
In interactive debugging, it is an essential task to set breakpoints specifying where a program should be suspended at runtime to allow interaction. A debugging session may use multiple logically related breakpoints so that the sequence of their (de)activations leads to the expected suspension with the least irrelevant suspensions. A (de)activation is sometimes decided by some runtime context values related to that breakpoint. However, existing breakpoints, which are mainly based on line locations, are not expressive enough to describe the logic and the collaboration. Programmers have to manually perform some repeated tasks, thus debugging efficiency is decreased. In this paper, we identify five frequently encountered debugging scenarios that require to use multiple breakpoints. For such scenarios, it is often easier than using the traditional debugger to write pointcuts in an aspect-oriented language, and to suspend the execution at the selected join points. However, existing languages cannot handle the scenarios neatly and uniformly. Therefore, we design and implement a breakpoint language that uses pointcuts to select suspension times in the program. Our language allows programmers to use comprehensible source-level abstractions to define breakpoints. Also, multiple breakpoints can be freely composed to express their collaboration. In this way, an expected suspension can be expressively programmed and reached with less or even no irrelevant suspensions.