am
, ams
, and amf
output a source code position and backtrace to stderr. amf
accepts a printf-style format string. ams
accepts a message, value, and sexp
converter for that value. Typical usage looks like:
...;
Debug.am [%here];
...;
Debug.amf [%here] "hello (%s, %s)" (X.to_string x) (Y.to_string y);
...;
Debug.ams [%here] "hello" (x, y) <:sexp_of< X.t * Y.t >>;
...;
The am*
functions output source code positions in the standard format
"FILE:LINE:COL", which means that one can use a tool like emacs grep-mode on a buffer
containing debug messages to step through one's code by stepping through the
messages.
should_print_backtrace
governs whether the am*
functions print a backtrace.