Browse thread
Where did the exception occur?
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
| Date: | -- (:) |
| From: | Pierre Weis <Pierre.Weis@i...> |
| Subject: | Re: Where did the exception occur? |
> I am running my program from the top-level, and the programs aborts to the > toplevel ans says: > > Uncaught exception: Not_found. > > Is there a way to tell where the exception occured, for example program > languages like SICStus Prolog, Lisp, Visual C++, Visual Basic normally stops > in a top-loop at the stack frame of the error. Is there a similar feature in > OCaml? > > ---- > Mattias Waldau Some programming languages use ``pushing'' exceptions (exceptions that push a stack frame on the control stack then try to find a handler), other languages use ``poping'' exceptions (exceptions pops stack frames directly to the next handler). Caml uses the second kind, which is considered more efficient. So there is no way in Caml to start a new top-loop where the exception occurred. However, you've got a nice replay debugger that allows you to step back anywhere in the past of the computation of your (bte-code) compiled program. So, you just have to go back to the point where the exception is raised and then use the usual top-level of the debugger. Hope this helps, Pierre Weis INRIA, Projet Cristal, Pierre.Weis@inria.fr, http://cristal.inria.fr/~weis/