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


R debug 调试函数


R语言 debug 位于 base 包(package)。

说明

设置、取消设置或查询函数的调试标志。 textcondition 参数与通过调用 browser 提供的参数相同。一旦进入浏览器,用户就可以检索它们,并提供一种机制来允许用户识别哪个断点已被激活。

用法

debug(fun, text = "", condition = NULL, signature = NULL)
debugonce(fun, text = "", condition = NULL, signature = NULL)
undebug(fun, signature = NULL)
isdebugged(fun, signature = NULL)
debuggingState(on = NULL)

参数

fun

任何解释的R函数。

text

输入浏览器时可以检索的文本字符串。

condition

输入浏览器时可以检索的条件。

signature

可选的方法签名。如果指定,则将调试该方法,而不是其泛型。

on

逻辑性;如果全局打开调试,则对支持函数 debuggingState 的调用将返回 TRUE,否则返回 FALSE。这些值中的一个或另一个的参数设置状态。如果调试状态为 FALSE ,则不会发生任何调试操作(但函数中的显式 browser 调用将继续工作)。

细节

当进入一个标记为调试的函数时,正常执行将被暂停,函数体一次执行一个语句。每个步骤都会启动一个新的 browser 上下文(并且前一个步骤会被销毁)。

在调试提示符下,用户可以输入命令或R表达式,后跟换行符。这些命令的说明见browser帮助主题。

要调试在另一个函数内定义的函数,请从 single-step 一直到其定义的末尾,然后在其名称上调用 debug

如果要调试不是从头开始的函数,请使用 trace(..., at = *)setBreakpoint

使用 debug 是持久的,除非关闭调试,否则每次调用都会进入调试器(请注意,如果删除并替换该函数,则不会保留调试状态)。仅在下次调用该函数时才使用debugonce() 进入调试器。

要通过显式签名调试 S4 方法,请使用 signature 。当指定时,签名指示要调试的fun的方法。请注意,在这种情况下,调试的实现方式略有不同,因为它使用跟踪机制,而不是调试位。因此,textcondition 不能与非空 signature 组合指定。对于实现 .local 重新匹配机制的方法,.local 闭包本身是最终要调试的闭包(请参阅 isRematched )。

isdebugged 返回 TRUE,如果 a) signatureNULL 并且闭包 fun 已被调试,或者 b) signature 不是 NULLfun 是 S4 泛型,并且该方法该签名的 fun 已被调试。在所有其他情况下,它返回 FALSE

当输入函数进行调试时,可以通过设置 options(deparse.max.lines) 来限制为解析调用打印的行数。

当在字节编译函数上启用调试时,将使用该函数的解释版本,直到禁用调试为止。

debugundebug 无形地返回 NULL

如果函数或方法是,isdebugged 返回TRUE

标记为调试,否则标记为FALSE

例子

## Not run: 
debug(library)
library(methods)

## End(Not run)
## Not run: 
debugonce(sample)
## only the first call will be debugged
sampe(10, 1)
sample(10, 1)

## End(Not run)

也可以看看

debugcall 用于方便的调试方法,browser 尤其是其 ‘commands’、tracetraceback 查看 Error: ... 消息后的堆栈; recover 另一种调试方法。

相关用法


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