Version: 5.1
40 Debugging
This library is
unstable;
compatibility will not be maintained.
See
Unstable for more information.
This module provides macros and functions for printing out debugging
information.
(debug options ... expr) |
|
options | | = | | #:name name-expr | | | | | | #:source srcloc-expr |
|
Writes debugging information about the evaluation of expr to the
current error port. The name and source location of the expression may be
overridden by keyword options; their defaults are the syntactic form of the
expression and its syntactic source location, respectively.
Examples: |
> (debug 0) |
>> eval:2.0: 0 | result: 0 | << eval:2.0: 0 |
|
0 |
> (debug #:name "one, two, three" (values 1 2 3)) |
>> eval:3.0: "one, two, three" | results: (values 1 2 3) | << eval:3.0: "one, two, three" |
|
1 |
2 |
3 |
|
>> here:1.2: (error 'function "something went wrong") | raised exception: function: something went wrong | << here:1.2: (error 'function "something went wrong") |
|
function: something went wrong |
Constructs a message in the same manner as
format and writes it to
(current-error-port), with indentation reflecting the number of nested
debug forms.
Examples: |
> (dprintf "level: ~a" 0) |
level: 0 |
> (debug (dprintf "level: ~a" 1)) |
>> eval:3.0: (dprintf "level: ~a" 1) | level: 1 | result: #<void> | << eval:3.0: (dprintf "level: ~a" 1) |
|
> (debug (debug (dprintf "level: ~a" 2))) |
>> eval:4.0: (debug (dprintf "level: ~a" 2)) | >> eval:4.0: (dprintf "level: ~a" 2) | level: 2 | result: #<void> | << eval:4.0: (dprintf "level: ~a" 2) | result: #<void> | << eval:4.0: (debug (dprintf "level: ~a" 2)) |
|
(debugf function-expr argument ...) |
|
argument | | = | | argument-expr | | | | | | argument-keyword argument-expr |
|
Logs debugging information for
(#%app function-expr argument ...),
including the evaluation and results of the function and each argument.
Example: |
> (debugf + 1 2 3) |
>> eval:2.0: debugf | >> eval:2.0: + | result: #<procedure:+> | << eval:2.0: + | >> eval:2.0: 1 | result: 1 | << eval:2.0: 1 | >> eval:2.0: 2 | result: 2 | << eval:2.0: 2 | >> eval:2.0: 3 | result: 3 | << eval:2.0: 3 | result: 6 | << eval:2.0: debugf |
|
6 |
|
|
|
|
|
|
(let/debug ([lhs-id rhs-expr] ...) body ...+) | (let/debug loop-id ([lhs-id rhs-expr] ...) body ...+) |
|
|
|
|
|
|
|
|
|
These macros add logging based on
debug to the evaluation of
expressions in
begin,
define,
define/private,
define/public,
define/override,
define/augment,
let,
let*,
letrec,
let-values,
let*-values,
letrec-values,
with-syntax,
with-syntax*, and
parameterize.