1 Exception utilities
2 Number utilities
3 String utilities
4 Bytes utilities
5 Symbol utilities
6 List utilities
7 PLT 4x hash utilities
8 PLT 3x hash utilities
9 URL utilities
10 Contract utilities
11 File and path utilities
12 Parameter utilities
13 Syntax utilities
14 SRFI19 time utilities
15 Scribble utilities
16 Generators
17 Generators (short names)
18 Pipelines
19 Write-through cache
20 Yieldable procedures
21 Debugging tools
22 Profiling tools
23 Logging tools
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.0.1

 

21 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.