From: John K. H. <hi...@al...> - 2003-10-15 22:56:25
|
I use this function to capture the call stack as a string. Then one can print it, log it to a file, etc. ; GET-STACK-AS-STRING - Get the stack as a string for inclusion error message (defun get-stack-as-string (&optional (nskip 0)) ; Skip to first relevant EVAL frame (do* ((result (make-string-output-stream)) (mode 4) (frame (system::the-frame) (system::frame-up-1 frame mode)) (last (system::frame-up frame 5)) (count 0 (1+ count)) (at-last nil)) (at-last (get-output-stream-string result)) (cond ((< count nskip) ) ((= count nskip) (system::describe-frame result frame) (setf mode 5)) ((equal frame last) (setf at-last t)) (t (system::describe-frame result frame))))) |