1. A computer-implemented method for debugging a software application, the computer-implemented method comprising the steps of: receiving a set of breakpoints, the set of breakpoints part of a finite state machine (FSM), the FSM having a set of states, the set of states including a start state and at least one acceptance state, each state connected to another state by at least one of the set of breakpoints, a state transitions to another state upon occurrence of a connected breakpoint; tracking during execution of the software application when each breakpoint occurs; notifying the FSM when each breakpoint occurs; receiving from the FSM notification that a first acceptance state has been reached, the first acceptance state representing occurrences of one or more breakpoints that transition the FSM from the start state to the first acceptance state; suspending execution of the software application when the FSM reaches the acceptance state; and performing debugging operations while execution of the software application is suspended.