1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
//! Breakpoints, and the two scopes they can live in.
//!
//! A breakpoint belongs to a step, not to a run. Setting one through
//! [`Step::set_break_on_step`](crate::Step::set_break_on_step) writes it into
//! the step, so every execution of that sequence stops there and the setting
//! outlives the run that set it.
//!
//! Passing an execution instead scopes the breakpoint to that one run. The
//! step on disk is untouched, and the breakpoint goes away with the execution.
//! That is what a host debugging on behalf of a remote panel wants: a
//! debugging session should not quietly edit the station's sequence files.
//!
//! Nothing here stops a run on its own. The engine only honors breakpoints
//! while they are switched on, which is a separate decision made at two levels.
//! [`Engine::breakpoints_enabled`](crate::Engine::breakpoints_enabled) is the
//! live switch for the session, and the station option of the same name is the
//! setting written to disk. With either off, a set breakpoint stays set and is
//! ignored.
use Value;
/// Which run a breakpoint applies to.
///
/// The engine takes this as an optional argument on every breakpoint member.
/// Leaving it out edits the step itself; supplying an execution scopes the
/// change to that run.