This is an overview of ways of debugging E programs.
Causeway is a post-mortem debugger (operating on logs produced by the program) displaying which turns caused which other turns.
Good ol' "printf debugging". Your options here are to either pass around stderr so that you can get to it in the code; or you can send messages to the tracelog with this gimmick:
throw <- ("your trace here")
This is the intended full interactive debugging mechanism for E.
A vat is created whose implementation includes debugging support — most likely, it is implemented using objects living in a normal vat. The "host" vat can therefore run code which examines the "debug-vat" objects and execution state to examine/step/modify them.
The unique property of debugging access is that it allows the vat to be suspended and examined in the middle of a turn.
This hasn't been done yet because it requires what User:Kevin Reid called a "full VM" implementation of E: there must be no immediate callbacks from primitive code to E objects, as that would make interruption impossible.