On this page:
debug-enabled?
current-debug-printer
debug
debug*
define-debug
let-debug
let*-debug
letrec-debug
with-pretty-indent
exn-context
Version: 4.0.2.5

22 Debugging tools

 (require (planet untyped/unlib/debug))

Utilities for printing the runtime values of variables for debugging purposes, with minimal disruption to code structure.

(debug-enabled?)  boolean?

(debug-enabled? val)  void?

  val : boolean?

Boolean parameter for enabling or disabling the printing of debugging information. Defaults to #t.

(current-debug-printer)  (-> string? any void?)

(current-debug-printer proc)  void?

  proc : (-> string? any void?)

Parameter controlling the formatting of printed debugging information. Value must be a procedure that takes a message and a value and returns void. The default value prints the message and a colon on one line and pretty-prints the value (slightly indented) on subsequent lines.

(debug val)  any

  val : any

Prints val and returns it transparently.

Examples:

  > (length (debug "square"

                   (for/list ([j '(1 2 3 4 5)])

                     (for/list ([i '(1 2 3 4 5)])

                       i))))

  square:

    ((1 2 3 4 5)

     (1 2 3 4 5)

     (1 2 3 4 5)

     (1 2 3 4 5)

     (1 2 3 4 5))

  5

(debug* proc arg ...)  any

  proc : procedure?

  arg : any

Applies proc to args and prints and returns the return value transparently.

Examples:

  > (add1 (debug* "message" * 2 2))

  message:

    4

  5

(define-debug id expr)

Expands to a define form that prints the value of id as a side effect.

Examples:

  > (define-debug test-data

      (+ 1 2 3))

  test-data:

    6

(let-debug ([id expr] ...) expr ...)

Expands to a let form that prints the value of each id as it is assigned.

Examples:

  > (let-debug ([a (+ 1 2)]

                [b (+ 3 4)])

       (list a b))

  a:

    3

  b:

    7

  (3 7)

(let*-debug ([id expr] ...) expr ...)

Expands to a let* form that prints the value of each id as it is assigned.

Examples:

  > (let*-debug ([a (+ 1 2)]

                 [b (* a a)])

       (list a b))

  a:

    3

  b:

    9

  (3 9)

(letrec-debug ([id expr] ...) expr ...)

Expands to a letrec form that prints the value of each id as it is assigned.

Examples:

  > (letrec-debug ([a (+ 1 2)]

                   [b (* a a)])

       (list a b))

  a:

    3

  b:

    9

  (3 9)

(with-pretty-indent prefix expr ...)

Parameterizes the pretty-print-print-line parameter to a procedure that acts the same as the default, except that every line is prefixed with prefix. prefix must be a string.

Examples:

  > (define square

      (for/list ([j '(1 2 3 4 5)])

        (for/list ([i '(1 2 3 4 5)])

          i)))

  > (pretty-print square)

  ((1 2 3 4 5)

   (1 2 3 4 5)

   (1 2 3 4 5)

   (1 2 3 4 5)

   (1 2 3 4 5))

  > (with-pretty-indent "..."

      (pretty-print square))

  ...((1 2 3 4 5)

  ... (1 2 3 4 5)

  ... (1 2 3 4 5)

  ... (1 2 3 4 5)

  ... (1 2 3 4 5))

(exn-context exn)  (listof symbol?)

  exn : exn?

Returns a printable form of the continuation marks of exn that can can be used with pretty-print to produce simple, legible debugging output.