首页 > 解决方案 > 检查 dump.frames() 的转储时,某些函数参数在 debugger() 中不可用

问题描述

我正在尝试保存一个允许良好调试的完整转储,但我发现一些函数参数(例如,从全局环境评估的那些)没有保存。我创建了一个简化的示例来说明这一点:

covariates <- c("hi", "there", "user")

f <- function (covariates, double_x) 
{
    stop("HI, ERROR!")
}

g <- function (x)
{
    f(covariates, 2*x)
}

options(warn = 1, keep.source = TRUE, show.error.locations = TRUE, error = quote({
    cat("\n====================\nERROR HANDLING ROUTINE\n")
    dump.frames(dumpto = "last.dump", to.file = TRUE, include.GlobalEnv = TRUE)
}))

g(100)

现在,当我稍后检查转储时(在不同的交互式 R 会话中

最后,covariates变量可以在第一帧找到1: .GlobalEnv;但是为什么covariates在函数框架中不可用f,当它是它的参数时,因此是函数的局部变量f?这使调试复杂化了很多......还有其他方法可以解决它吗?我并不担心这options(error = recover)与交互式会话中的方式不同。

PS:这个问题的灵感来自这个答案,展示了如何跟踪错误的好方法

标签: r

解决方案


推荐阅读