The cli exists in src/bin/debugger-cli. It handles user interaction and
operates by calling out to tests/utils/debugger. The debugger itself
manipulates the replica fsms by calling out to tests/utils/scheduler
which in turn uses the dispatcher.
The debugger is pretty basic and provides a few operations:
status - show the current state of the debugger (frame/step count,
message state)
print replicas | print - print the names of all replicas or
the state and context of a given replica
jump forward - Jump between frames, e.g. test messages in
the fuzz history. The frames are pre-recorded in msgpack format
during fuzz execution and saved in a schedule.txt file in
tests/output.
jump backward - Jump back to the previous frame/test message
step forward - Receive one internal message resulting from an
executed test message (or send the test message if at the start of a frame)
step backward - step back to the last sent internal test message.
This is useful during failing tests. We start out at the end of the
history. We can then step backwards and discover what the states were
before the test failed.
reset-diff - Take a baseline snapshot of the replica states
diff - Show the difference between the baseline and current state of
the replicas. Note that diffs are forward only. Meaning if the
baseline occurs in a frame or step after the current state the
baseline will be removed and a new baseline will have to be taken.
The cli exists in src/bin/debugger-cli. It handles user interaction and operates by calling out to tests/utils/debugger. The debugger itself manipulates the replica fsms by calling out to tests/utils/scheduler which in turn uses the dispatcher.
The debugger is pretty basic and provides a few operations: