
On February 19, 2011 12:11:13 Edward Z. Yang wrote:
I was thinking it might be useful if we had a per-thread circular buffer in memory for which we pushed a pointer to the info table we had just entered. In the event of a crash, you could dump the contents of the buffer to see what code had been recently executed. To reduce overhead, one might only need to record this information when we do a tail call, and not when the path can be reconstructed from the stack. (Obviously, you'd need to compile in debug mode, and you'd probably want to also add an RTS flag).
What do people think?
I believe a back trace on the actual call stack is generally considered not that useful in a lazy language as it corresponds to the evaluation sequence, That is, it is demand centric while written code is production centric http://hackage.haskell.org/trac/ghc/wiki/Debugging/CompiledCode Here's a link that summarizes some thoughts on production centric back traces http://hackage.haskell.org/trac/ghc/wiki/ExplicitCallStack Cheers! -Tyson