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

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to