[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: How to get better stack trace from a script executed via shebang?
From: |
wolf |
Subject: |
Re: How to get better stack trace from a script executed via shebang? |
Date: |
Thu, 2 Feb 2023 17:51:42 +0100 |
On 2023-02-02 17:39:50 +0100, Jean Abou Samra wrote:
> On 02/02/2023 17:11, Wolf wrote:
> > Hello,
> >
> > I'm having a problem of getting borderline useless stack traces from a
> > script
> > executed via a shebang. For example, let's consider following script:
> >
> > $ cat /tmp/x.scm
> > #!/bin/sh
> > exec guile --no-auto-compile -e main -s "$0" "$@"
> > !#
> >
> > (define (main args)
> > (foo))
> >
> > (define (foo)
> > (bar))
> >
> > (define (bar)
> > (error "x"))
> >
> > When I execute it directly, the error message is not great:
> >
> > $ /tmp/x.scm
> > Backtrace:
> > In ice-9/boot-9.scm:
> > 1752:10 4 (with-exception-handler _ _ #:unwind? _ #:unwind-for-type
> > _)
> > In unknown file:
> > 3 (apply-smob/0 #<thunk 7fdb1e7a2340>)
> > In ice-9/boot-9.scm:
> > 724:2 2 (call-with-prompt ("prompt") #<procedure 7fdb1e7b2c80 at
> > ice-9/eval.scm:330:13 ()> #<procedure default-prompt-handler (k proc)>)
> > In ice-9/eval.scm:
> > 619:8 1 (_ #(#(#<directory (guile-user) 7fdb1e7a5c80>)))
> > In ice-9/boot-9.scm:
> > 2007:7 0 (error _ . _)
> >
> > ice-9/boot-9.scm:2007:7: In procedure error:
> > x
> >
> > The /tmp/x.scm file is not even mentioned once in the output. Can this be
> > somehow (command line arguments, changing the exec line, ...) improved?
> > Currently it's not very useful when I need to find out what the problem was.
>
>
>
> This is a known issue for code that is evaluated, as opposed
> to being compiled. Consider leaving out --no-auto-compile.
Oh, I was not aware of that. You suggestion does indeed make it better, thank
you.
;;; note: source file /mnt/shared/system/./run
;;; newer than compiled
/root/.cache/guile/ccache/3.0-LE-8-4.6/mnt/shared/system/run.go
;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0
;;; or pass the --no-auto-compile argument to disable.
;;; compiling /mnt/shared/system/./run
;;; compiled /root/.cache/guile/ccache/3.0-LE-8-4.6/mnt/shared/system/run.go
Now there is this output that as far as I know cannot be suppressed (that was
the reason for --no-auto-compile), but that seems like lesser of two evils
here.
So, thanks :)
W.
--
There are only two hard things in Computer Science:
cache invalidation, naming things and off-by-one errors.
signature.asc
Description: PGP signature