Module Debuggers.Tracer
Produce a full execution trace. The order of the trace is independent of the order in which commands are executed in different threads, so it is suitable for expect tests.
include S
val before_prim : t -> ('a, 'b) Shexp_process.Prim.t -> ('a, 'b) Shexp_process.Prim.Args.t -> ('a, 'b) prim_token
Called before the execution of a primitive. The S-expression is a representation of the primitive call, for instance
(mkdir "foo")
.
val after_prim : t -> ('a, 'b) Shexp_process.Prim.t -> ('b, exn * Stdlib.Printexc.raw_backtrace) Stdlib.result -> ('a, 'b) prim_token -> unit
Called after the execution of a primitive, with the result.
val user_exn : t -> exn -> Stdlib.Printexc.raw_backtrace -> unit
Register a user exception, i.e. when a
bind
raises.
val output : t -> string -> unit
Captured output
val enter_sub : t -> unit
Shexp tries to linearize the trace as much as possible. When an execution parameter is changed locally, such as in
(chdir ...) >>= ...
, a sub context is entered.
val leave_sub : t -> unit
val force_threads : bool
Force the use of threads in all forks, even when
Shexp_process
detect they are not necessary.
val create : unit -> t
val result : t -> Shexp_sexp.Std.Sexp.t