ZEE will provide two types of breakpoints: absolute and conditional. Absolute breakpoints are set in the standard way, by line number or procedure name. A conditional breakpoint is essentially an absolute breakpoint with a predicate condition, where the condition is any computable expression, either local or global, disjunctive or conjunctive, as well as majority testing. Conditional breakpoints are tripped only if the corresponding line is reached while the condition is true. (This restriction is made in the interests of simplicity and efficiency, and eliminates the need for a complex condition detection algorithm.) It will also be possible to implement ``regional'' conditional breakpoints, which are tripped at any point during the execution of a fragment of code (selected by the user) when the condition becomes true. A completely general conditional breakpoint would be implemented by selecting every line of source code in this way.
If a breakpoint occurs in a sequential section, the (single) thread stops, exactly like a breakpoint in a sequential program. If the breakpoint trips in an SP section, all threads are stopped in the same place, regardless of which (or how many) threads actually triggered the breakpoint. (For standard line-number breakpoints, all threads will trigger at the same time, anyway.) If the breakpoint appears in an AP section, every thread tripping the breakpoint will stop at that point, and all other threads will continue until the end of the AP section (or be rolled back to the beginning of the AP section, at the user's discretion).