caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: "Nicolas Cannasse" <warplayer@free.fr>
To: <caml-list@inria.fr>, "Issac Trotts" <ijtrotts@nez-perce.inria.fr>
Subject: Re: [Caml-list] getting stack traces in running code
Date: Wed, 3 Dec 2003 12:19:05 +0900	[thread overview]
Message-ID: <000201c3b94d$11646b80$0274a8c0@PWARP> (raw)
In-Reply-To: <20031202222628.GA1640@localhost>

> > Is there a reason why stack traces are available only on a crash?  I
> > have a project (a distributed OpenPGP keyserver system,
> > http://www.nongnu.org/sks/) that is a long-running daemon.  Unexpected
> > errors are caught and logged, but unfortunately, there's no way of
> > getting a stack-trace, since I don't let the exceptions kill the
> > program.  This makes debugging much more difficult, and is one of the
> > single largest difficulties I have with ocaml.  Is there a technical
> > reason that a bytecode-compiled executable couldn't have access to the
> > stack trace during execution?
>
> I have a partial solution:
[...]
> It's not quite right yet because it only prints out the
> place where the exception was raised (which will be in
> Pervasives if you use failwith), and the place where it
> was caught and printed.  Does someone know how to make it
> print the whole stack?

I think this is because you're adding an additional call to "print", that is
writing on the stack (!). Since you can't write on the stack, you can't call
any ML handler between catching and printing the exception.
You should then have no backtrace.ml and only a mli with :

external print_stack_strace : unit -> unit = "internal_print"

the user can then print the exception using a Printexc... after printing the
stack.

BTW, if the "print_exception_backtrace" of the caml sources was exported as
Primitive, we would be able to do it without the need of any C stub : the
other way to do it is then to run a modified interpreter where CAMLexport
have been replaced with CAMLprim in backtrace.c....

Nicolas Cannasse

-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners


  reply	other threads:[~2003-12-03  3:25 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-12-02 20:50 Yaron M. Minsky
2003-12-02 21:45 ` Richard Jones
2003-12-02 22:26 ` Issac Trotts
2003-12-03  3:19   ` Nicolas Cannasse [this message]
2003-12-03 14:19     ` Damien Doligez
2003-12-03 18:26     ` Issac Trotts

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='000201c3b94d$11646b80$0274a8c0@PWARP' \
    --to=warplayer@free.fr \
    --cc=caml-list@inria.fr \
    --cc=ijtrotts@nez-perce.inria.fr \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).