Expand description
Conditions on a breakpoint: break TestContract.sol:30 if counter > 4.
A condition is a comparison, or several joined by && and ||, over values the
debugger can actually read at a step: the local variables in scope (inferred from the
legacy stack layout, see StepMap::locals_at), state variables through the storage
layout (including balances[0xabc] and config.limit), the arguments of the frame
being entered, enum literals such as Color.Red, and a few facts about the step
itself (pc, gas, depth, op, step). There is no arithmetic and no calls: a
debugger that evaluated Solidity would have to execute it, and this crate never
executes anything.
A condition that cannot be evaluated — a slot the transaction never touched, a name
nothing defines, a comparison between a number and a string — does not stop, and says
why through Evaluation::Unavailable. That is deliberate: stopping on an unreadable
condition would be a false positive, and silently treating it as false would hide the
reason it never fires.
Structs§
- Condition
- A parsed breakpoint condition.
- Condition
Context - Everything a condition can read at one step.
Enums§
- Evaluation
- What a condition evaluated to at one step.
- Value
- A value a condition can compare.