在我的 webapp 中调用 R 函数时,我想在发生错误时捕获堆栈跟踪并将其呈现给用户以进行调试。类似于traceback()
交互式会话中的输出。但是,traceback
在错误处理程序中调用它时似乎不起作用,它返回No traceback available
:
f <- function() {
g <- function() stop("test traceback")
g()
}
errhandler <- function(e){
stacktrace <- traceback()
unlist(stacktrace);
}
out <- tryCatch(f(), error=errhandler)
有什么方法可以以编程方式捕获错误的堆栈跟踪?traceback()
即得到错误后手动调用时我会得到的输出:
f()
traceback()