Folks,

I'm happy to announce a new release of control-monad-exception with monadic call traces,
available in Hackage. Grab it now while it is still online!

Monadic stack traces are described in detail in a blog post [1].

In short, what this means for your code is the ability to generate errors like this:

500 Internal Server Error
The CGI server failed with the following error:
DeleteException (BmPK 2009-10-26 19:39:51.031297 UTC "Testing RPO")
in deleteBenchmarkFromPK, NarradarBenchmarkDB(src/ NarradarBenchmarkDB.hs): (186, 44) deleteBenchmarkFromPK, NarradarBenchmarkDB(src/ NarradarBenchmarkDB.hs): (186, 25) deleteBenchmarkFromPK, NarradarBenchmarkDB(src/ NarradarBenchmarkDB.hs): (184, 17) deleteBenchmarkFromPK, NarradarBenchmarkDB(src/ NarradarBenchmarkDB.hs): (180, 90) deleteTests, NarradarBenchmarkCGI(src/NarradarBenchmarkCGI.hs): (108, 3) deleteTests, NarradarBenchmarkCGI(src/NarradarBenchmarkCGI.hs): (106, 20) cgiMain, NarradarBenchmarkCGI(src/NarradarBenchmarkCGI.hs): (52, 33) cgiMain, NarradarBenchmarkCGI(src/NarradarBenchmarkCGI.hs): (52, 30)
    cgiMain, NarradarBenchmarkCGI(src/NarradarBenchmarkCGI.hs): (50, 9)
cgiMain, NarradarBenchmarkCGI(src/NarradarBenchmarkCGI.hs): (46, 11)

Currently a preprocessor is used to insert the source location information in the right places. The preprocessor is invoked by including the following pragma at
the top of your Haskell source files:

{-# OPTIONS_GHC -F -pgmF MonadLoc #-}

In addition, you need to be in a monad which implements the Monadloc interface,
currently the EMT monad from control-monad-exception being the only one,
although it is trivial to enhance any error monad to implement this interface.

In addition, support for monadic stack traces could be built into GHC and:
 1. No preprocessor would be needed.
2. Eventually the IO monad could be enhanced to provide stack traces like this.

Enjoy your monadic call traces !

Pepe Iborra

[1] - 
http://pepeiborra.posterous.com/monadic-stack-traces-that-make-a-lot-of-sense

_______________________________________________
Haskell mailing list
Haskell@haskell.org
http://www.haskell.org/mailman/listinfo/haskell

Reply via email to