A pointcut language for setting advanced breakpoints

  • Authors:
  • Haihan Yin;Christoph Bockisch;Mehmet Aksit

  • Affiliations:
  • Software Engineering group, University of Twente, Enschede, Netherlands;Software Engineering group, University of Twente, Enschede, Netherlands;Software Engineering group, University of Twente, Enschede, Netherlands

  • Venue:
  • Proceedings of the 12th annual international conference on Aspect-oriented software development
  • Year:
  • 2013

Quantified Score

Hi-index 0.00

Visualization

Abstract

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.