我有以下代码,它会引发错误并使用Hadley Wickhamdump.frames()
的建议写入所有帧的转储:
a <- -1
b <- "Hello world!"
bad.function <- function(value)
{
log(value) # the log function may cause an error or warning depending on the value
}
tryCatch( {
a.local.value <- 42
bad.function(a)
bad.function(b)
},
error = function(e)
{
dump.frames(to.file = TRUE)
})
当我重新启动 R 会话并加载转储以通过以下方式调试问题时
load(file = "last.dump.rda")
debugger(last.dump)
我在帧中的任何地方都找不到我的变量(a、b、a.local.value)和我的函数“bad.function”。
这使转储对我来说几乎毫无价值。
为了进行体面的事后分析,我必须做什么才能查看所有变量和函数?
的输出debugger
是:
> load(file = "last.dump.rda")
> debugger(last.dump)
Message: non-numeric argument to mathematical functionAvailable environments had calls:
1: tryCatch({
a.local.value <- 42
bad.function(a)
bad.function(b)
2: tryCatchList(expr, classes, parentenv, handlers)
3: tryCatchOne(expr, names, parentenv, handlers[[1]])
4: value[[3]](cond)
Enter an environment number, or 0 to exit
Selection:
PS:我正在使用 R3.3.2 和 RStudio 进行调试。