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 (nonaspect-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 man...