Debugging with control-flow breakpoints

  • Authors:
  • Rick Chern;Kris De Volder

  • Affiliations:
  • University of British Columbia, Vancouver BC, Canada;University of British Columbia, Vancouver BC, Canada

  • Venue:
  • Proceedings of the 6th international conference on Aspect-oriented software development
  • Year:
  • 2007

Quantified Score

Hi-index 0.00

Visualization

Abstract

Modern source-level debuggers support dynamic breakpoints that are guarded by conditions based on program state. Such breakpoints address situations where a static breakpoint is not sufficiently precise to characterise a point of interest in program execution. However, we believe that current IDE support for dynamic breakpoints are cumbersome to use. Firstly, guard conditions formulated in (non-aspect-oriented) source-languages cannot directly express control-flow conditions, forcing developers to seek alternative formulations. Secondly, guard-conditions can be complex expressions and manually typing them is cumbersome.We present the Control-flow Breakpoint Debugger (CBD). CBD uses a dynamic pointcut language to characterise control-flow breakpoints---dynamic breakpoints which are conditional on the control-flow through which they were reached. CBD provides a "point-and-click" GUI to specify and incrementally refine control-flow breakpoints, thereby avoiding the burden of manually editing the potentially complex expressions that define them.We performed 20 case studies debugging and fixing documented bugs in 3 existing applications. Our results show that dynamic breakpoints in general are useful in practice, and that CBD's GUI allows specifying them adequately in the majority of cases.