Patent attributes
A debugger utilizes a finite state machine to control when execution of a software application is suspended. The finite state machine uses breakpoints as transitions that move the finite state machine from a start state to an acceptance state. The debugger tracks when breakpoints used in the finite state machine occur. When the finite state machine reaches an acceptance state, the debugger suspends execution of the software application to allow a developer to observe and/or alter the program state or software application. The finite state machine may be generated by a developer as a graph or as a regular expression that is then converted into a finite state machine. In this manner, a developer may specify more complex conditions upon which to suspend execution of a debugger.