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).