Debugging
From Erights
This is an overview of ways of debugging E programs.
Contents |
Causeway
Causeway is a post-mortem debugger (operating on logs produced by the program) displaying which turns caused which other turns.
Host debugging
E programs can be examined by the host platform (Java, CL, ...)'s debugging mechanisms. This is not especially pleasant in E-on-Java since the E code is interpreted, not compiled.
Printing
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")
Virtualization
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.