当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R debugger 事后调试


R语言 debugger 位于 utils 包(package)。

说明

转储评估环境(帧)并检查转储帧的函数。

用法

dump.frames(dumpto = "last.dump", to.file = FALSE,
            include.GlobalEnv = FALSE)
debugger(dump = last.dump)

limitedLabels(value, maxwidth = getOption("width") - 5L)

参数

dumpto

一个字符串。要转储到的对象或文件的名称。

to.file

合乎逻辑的。垃圾场是否应存放在R对象或文件?

include.GlobalEnv

逻辑指示除了 sys.frames() 之外是否还应包含 .GlobalEnv 环境的副本。在批处理作业中使用时特别有用。

dump

一个R转储对象创建者dump.frames.

value

要格式化的 listcall,例如用于用户菜单。

maxwidth

limitedLabels() 的结果修剪到的可选长度;小于 40 或大于 1000 的值将被缩尾。

细节

要使用post-mortem调试,请设置选项error调用给dump.frames。默认情况下,这会转储到R对象last.dump在工作区中,但可以将其设置为转储到文件(通过调用生成的对象的转储)save)。转储的对象包含调用堆栈、活动环境和返回的最后一个错误消息geterrmessage.

当转储到文件时,dumpto给出转储对象的名称,文件名包含‘.rda” 附加。

可以通过调用 debugger 检查类 "dump.frames" 的转储对象。这将给出错误消息和可供重复选择的环境列表。选择环境后,将复制该环境并从副本中调用browser。请注意,并非原始帧中的所有信息都可用,例如尚未评估的 Promise 以及任何 ... 参数的内容。

如果安装 dump.frames 作为错误处理程序,则即使在非交互式会话中也会继续执行。请参阅示例了解如何转储然后退出。

limitedLabels(v) 接受 list 调用,其元素可能具有 srcref 属性,并返回一个向量,该向量将这些属性的格式化版本粘贴到元素的格式化版本上,所有最终 strtrim() med 到 maxwidth

看不见的NULL

注意

应用于闭包的 sys.parentenvironment 等函数在 debugger 内将无法正常工作。

如果在计算形式参数的默认值时发生错误,调试器将在尝试检查该环境时报告“递归默认参数表示”。

当然post-mortem调试将无法工作,如果R损坏太严重而无法生成和保存转储,例如,如果它已用完工作空间。

例子

## Not run: 
options(error = quote(dump.frames("testdump", TRUE)))

f <- function() {
    g <- function() stop("test dump.frames")
    g()
}
f()   # will generate a dump on file "testdump.rda"
options(error = NULL)

## possibly in another R session
load("testdump.rda")
debugger(testdump)
Available environments had calls:
1: f()
2: g()
3: stop("test dump.frames")

Enter an environment number, or 0 to exit
Selection: 1
Browsing in the environment with call:
f()
Called from: debugger.look(ind)
Browse[1]> ls()
[1] "g"
Browse[1]> g
function() stop("test dump.frames")
<environment: 759818>
Browse[1]>
Available environments had calls:
1: f()
2: g()
3: stop("test dump.frames")

Enter an environment number, or 0 to exit
Selection: 0

## A possible setting for non-interactive sessions
options(error = quote({dump.frames(to.file = TRUE); q(status = 1)}))

## End(Not run)

参考

Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.

也可以看看

browser 了解 Browse 提示符下可用的操作。

options 用于设置error 选项; recover 是一个交互式调试器,其工作方式与 debugger 类似,但在错误发生后立即进行。

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Post-Mortem Debugging。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。