The Breakpoint System
Kahina features a powerful breakpoint system which, in addition to its obvious use in defining breakpoints, is also used for both pattern search and workflow automation. In addition to putting breakpoints on source code lines as in a typical source-level debugger, breakpoints can be defined by pattern matches using regular expressions over step descriptions, or regular tree patterns ranging over substructures of the control flow tree. All these patterns can be freely combined using boolean expressions, and they can be extended by counters, which in turn can be furnished with numerical constraints. For instance, this makes it possible to define a breakpoint which only fires at every tenth match of some tree pattern. Collections of breakpoints can be administered and edited using the graphical Breakpoint Editor?, which includes a tree editor as an intuitive method for defining tree patterns.
Searching
The breakpoint system can also be used for searching through the step database, by temporarily defining a breakpoint and running it over the existing control flow tree. The message console will then show all the matches, each line acting as a link for selecting and scrolling to the matching node. All of the patterns that can be used in breakpoint definitions can serve as search patterns in this way.