[R] options(errorfn=traceback)

Duncan Murdoch 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
>
> tryCatch(
>
> ... 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...
>
> possible?

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.

Duncan Murdoch



More information about the R-help mailing list