murdoch.duncan at gmail.com
Fri Nov 25 15:05:13 CET 2011
On 11-11-24 11:22 PM, ivo welch wrote:
> Dear R experts---I may have asked this in the past, but I don't think
> I figured out how to do this. I would like to execute traceback()
> automatically if my R program dies---every R programI ever invoke. I
> guessed that I could have wrapped my entire R code into
> ... oodles of R code
> error = function(e) traceback(),
> finally = cat("done")
> but the traceback docs tell me that this does not generate a
> traceback(). in a perfect world, I would stick this into my .Rprofile
> and forget about it. in an super-perfect world, it would be an
> option() that I just don't know yet...
Sure, but it's a little bit of work. The traceback doesn't exist at
that point, so you can't print it. But you could construct it yourself.
This comes close:
options(error=function(e) print(traceback(sapply(sys.calls(), deparse))))
You may want something a little fancier so it doesn't print itself, and
I think the order may be the reverse of the usual order, but I said it
would be a little bit of work.
More information about the R-help