Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Session Commands

Session commands manage the call sequence – the ordered list of function calls that represents an execution scenario you want to analyze.

call

c <function> or call <function>

Adds a function call to the session sequence. Only external and public functions are accepted; internal and private functions are rejected since they cannot be entry points for a real transaction.

ilold[Staking]> c deposit

  + Step 0: deposit [P] external
    State writes:
      · balances
      · totalStaked
    Sequence: deposit
ilold[→ deposit]> c withdraw

  + Step 1: withdraw [P] external
    State writes:
      · balances
      · totalStaked
    Sequence: deposit → withdraw

Returns: StepAdded { step_index, function, access, state_changed }. access is one of Public, Restricted { role }, Internal, Special { kind }.

Attempting to call an internal function:

ilold[Staking]> c _updateRewards

  '_updateRewards' is internal and cannot be called from outside the contract —
  not a valid session entry point. Use `tr _updateRewards` to view its flow,
  or `c <public_caller>` to trace a real entry point.

back

b or back

Removes the last step from the session sequence.

ilold[→ deposit → withdraw]> b

  - Step removed. 1 remaining.
    Sequence: deposit

clear

cl or clear

Resets the session, removing all steps. Prompts for confirmation if steps exist.

ilold[→ deposit → withdraw]> cl
  Clear 2 steps? (y/n)
  y
  Session cleared.

state

s or state

Shows the accumulated state mutations across all steps in the session. Each variable lists every mutation with the operator symbol (+=, -=, =) and the originating function.

ilold[→ deposit → withdraw]> s

  ═══════════════════[ STATE ]═══════════════════
  balances
    += msg.value (step 0, deposit)
    -= amount (step 1, withdraw)
  totalStaked
    += msg.value (step 0, deposit)
    -= amount (step 1, withdraw)

Each change line is <operator> <value_expr> (step <N>, <function>), with an optional via <modifier> suffix when the mutation comes from a modifier body.

Returns: StateView { summary: [VariableSummary { variable, changes }] }. If the session is empty, state tells you to add steps first.

sequence

seq or sequence

Displays a narrative of the current call sequence, including dependencies between steps and observations about the interaction pattern. Requires at least 2 steps.

ilold[→ deposit → withdraw]> seq

  Step 0: deposit
    writes: balances, totalStaked

  Step 1: withdraw
    writes: balances, totalStaked
    depends on: deposit (shared state: balances, totalStaked)

  Observations:
    · deposit and withdraw modify the same variables (balances, totalStaked)

step

st <index> or step <index>

Re-inspects a specific session step, showing its full function narrative (same output as info). You can also write st0, st1 without a space.

ilold[→ deposit → withdraw]> st 0

  deposit [public] — whenNotPaused
  ├── Paths: 2 total, 1 happy, 1 revert
  ├── State reads: balances
  ├── State writes: balances, totalStaked
  └── Events: Deposited

session

ss or session

Shows the full session overview: active contract, current step sequence, and findings count.

ilold[→ deposit → withdraw]> ss

  Contract: Staking
  Steps:    deposit → withdraw
  Findings: 0