Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | small fix to print-stack-trace |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
927509fadb27d92885ecc6d30505e475 |
User & Date: | aldo 2017-01-11 17:49:26 |
Context
2017-01-11
| ||
17:53 | small fix to print-stack-trace check-in: 07ac33f7e0 user: aldo tags: trunk | |
17:49 | small fix to print-stack-trace check-in: 927509fadb user: aldo tags: trunk | |
17:46 | added print-stack-trace and read-string to thunder-utils.sls check-in: 0e61d1648b user: aldo tags: trunk | |
Changes
Changes to thunder-utils.sls.
62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 |
[() (read-string #f)] [(n) (read-string n (current-input-port))] [(n port) (if n (get-string-n port n) (get-string-all port))])) (define (print-stack-trace depth) (printf "stack-trace:\n") (call/cc (lambda (k) (let loop ((cur (inspect/object k)) (i 0)) (if (and (< i depth) (> (cur 'depth) 1)) (let* ([name (cond [((cur 'code) 'name) => (lambda (x) x)] [else "*"])] [source ((cur 'code) 'source)] [source-txt (if source (let ([ss (with-output-to-string (lambda () (source 'write (current-output-port))))]) (if (> (string-length ss) 50) (string-truncate! ss 50) ss)) "*")]) (call-with-values (lambda () (cur 'source-path)) (case-lambda [() (printf "[no source] [~a]: ~a\n" name source-txt)] [(fn bfp) (printf "~a char ~a [~a]: ~a\n" fn bfp name source-txt)] [(fn line char) (printf "~a:~a:~a [~a]: ~a\n" fn line char name source-txt)])) (loop (cur 'link) (+ i 1))))))) (printf "stack-trace end.\n")) );library |
| < < | | | | | | | | | | | | | | | | | | | | | | |
62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
[() (read-string #f)] [(n) (read-string n (current-input-port))] [(n port) (if n (get-string-n port n) (get-string-all port))])) (define (print-stack-trace k depth) (printf "stack-trace:\n") (let loop ((cur (inspect/object k)) (i 0)) (if (and (< i depth) (> (cur 'depth) 1)) (let* ([name (cond [((cur 'code) 'name) => (lambda (x) x)] [else "*"])] [source ((cur 'code) 'source)] [source-txt (if source (let ([ss (with-output-to-string (lambda () (source 'write (current-output-port))))]) (if (> (string-length ss) 50) (string-truncate! ss 50) ss)) "*")]) (call-with-values (lambda () (cur 'source-path)) (case-lambda [() (printf "[no source] [~a]: ~a\n" name source-txt)] [(fn bfp) (printf "~a char ~a [~a]: ~a\n" fn bfp name source-txt)] [(fn line char) (printf "~a:~a:~a [~a]: ~a\n" fn line char name source-txt)])) (loop (cur 'link) (+ i 1))))) (printf "stack-trace end.\n")) );library |