That looks like a nice project ! Another trick I use personally is to run the faulting program from inside Emacs's compile-mode (using "build && run" instead of just "build" as a compilatoin command), and piggy-back on its parsing of OCaml error locations to ask Emacs to drive me around the relevant files.
I'm sure there are scenarios where your simultaneous view of all fragments at once can be very helpful, and I'm also interested in the uses of the new backtrace/callstack inspection API.

> (we can't use exceptions at all inside a backtrace handler, for example)

I'm a bit surprised by this. Part of the point of reifying traces into datatypes (raw_backtrace, backtrace_slot) was to make them persistent. set_uncaught_exception_handler is passed a raw trace that should not be mutated by raising new exceptions. What breaks if you use exceptions inside a backtrace handler?

On Sun, Oct 19, 2014 at 8:03 PM, John Whitington <john@coherentgraphics.co.uk> wrote:
Hi,

OCaml 4.02 has new facilities for installing a new backtrace handler, and processing the back trace symbolically. As a little proof of concept, I've built a package which you can add to any project to get backtrace with source code printed and highlighted:

https://github.com/johnwhitington/exn-source

Here's the start of a backtrace:

http://www.coherentpdf.com/exnsource.png

By default, it prints five lines either side, and looks the current directory for source code. But as one can see from the screenshot, one can add /usr/local/lib/ocaml to get stdlib source and so on...

It's somewhat difficult to test this kind of thing (we can't use exceptions at all inside a backtrace handler, for example), so I'm appealing for help. Attach exn-source to your code and let me know how you get on...

Thanks,

--
John Whitington
Director, Coherent Graphics Ltd
http://www.coherentpdf.com/


--
Caml-list mailing list.  Subscription management and archives:
https://sympa.inria.fr/sympa/arc/caml-list
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
Bug reports: http://caml.inria.fr/bin/caml-bugs