Outdated egg!
This is an egg for CHICKEN 4, the unsupported old release. You're almost certainly looking for the CHICKEN 5 version of this egg, if it exists.
If it does not exist, there may be equivalent functionality provided by another egg; have a look at the egg index. Otherwise, please consider porting this egg to the current version of CHICKEN.
debug
Some trivial debugging macros
TOC »
Abstract
According to Joe Armstrong, "The great gods of programming said, 'Thou shalt put printf statements in your program at the point where you think itβs gone wrong, recompile, and run it.'"
Documentation
debug?
- debug?parameter
`debug?' turns on or off debugging output, depending on whether it is set to #t or #f; respectively.
(define debug? (make-parameter #t))
trace
- (trace f) β unspecifiedsyntax
Trace the input to and output from a function.
- f
- The function to be traced
(define-syntax trace (er-macro-transformer (lambda (expression rename compare) (match-let (((_ f) expression)) (let ((%set! (rename 'set!)) (%lambda (rename 'lambda)) (%call-with-values (rename 'call-with-values)) (%apply (rename 'apply)) (%format (rename 'format)) (%values (rename 'values)) (%let (rename 'let)) (%f (rename 'f)) (%when (rename 'when)) (%debug? (rename 'debug?))) `(,%when (,%debug?) (,%let ((,%f ,f)) (,%set! ,f (,%lambda x (,%format (current-error-port) ";; Arguments to ~a: ~a~%" ',f x) (,%let ((return-values (,%call-with-values (,%lambda () (,%apply ,%f x)) (,%lambda x x)))) (,%format (current-error-port) ";; Values from ~a: ~a~%" ',f return-values) (,%apply ,%values return-values)))))))))))
debug
- (debug expressions) β unspecifiedsyntax
Debug the expressions to stderr by pretty-printing each expression and their evaluations.
- expressions
- The expressions to be debugged
(define-syntax debug (syntax-rules () ((_ x ...) (with-output-to-port (current-error-port) (lambda () (when (debug?) (pp `(,(if (or (boolean? 'x) (char? 'x) (number? 'x) (string? 'x) (vector? 'x)) x `(x => ,(handle-exceptions exn (let ((message ((condition-property-accessor 'exn 'message) exn)) (arguments ((condition-property-accessor 'exn 'arguments) exn))) (format "Error: ~a~a" message (if (null? arguments) "" (format ": ~a" (string-join (map ->string arguments) ", "))))) x))) ...))))))))
debug-priority
- debug-priorityparameter
The priority associated with debug/syslog
(define debug-priority (make-parameter prio/debug))
debug/syslog
- (debug/syslog expressions) β unspecifiedsyntax
Debug to syslog.
- expressions
- The expressions to debug (cf. `debug' supra)
(define-syntax debug/syslog (ir-macro-transformer (lambda (expression rename inject) `(let ((port (make-syslog-port))) (with-error-output-to-port port (lambda () (when (debug?) (debug ,@(cdr expression)) (flush-output port))))))))
About this egg
Author
Repository
https://github.com/klutometis/debug
License
BSD
Dependencies
Versions
- 0.1
- Version 0.1
- 0.1.1
- Version 0.1.1
- 0.1.2
- BSD
- 0.2
- Add a `debug?'-parameter.
- 0.3
- Add exception-guard; document.
- 0.3.1
- Add "Error: ..."
- 0.3.2
- Add arguments in errors.
- 0.3.3
- Don't do arguments if we don't have to.
- 0.3.4
- With a note about cock-utils
- 0.3.5
- Add test-exit.
- 0.3.6
- Disable an offending test.
- 0.3.7
- Self-evaluating scalars
- 0.3.8
- Fix tests
- 0.3.9
- Fix debug/syslog.
- 0.3.10
- Default-priority -> debug-priority
- 0.3.11
- Use setup-helper-cock.
- 0.3.12
- Remove the dependency on setup-helper-cock.
- 0.3.13
- Drop setup-helper-cock.
- 0.3.14
- Use ports, don't merely import it.
- 0.3.15
- Use hahn.
Colophon
Documented by hahn.