R中的'debug()'级别
通常,当我对R中的某个函数调用R中的'debug()'级别,r,debugging,R,Debugging,通常,当我对R中的某个函数调用debug()时,它只是逐步遍历该函数,但有时它会跟随调用堆栈向下。我不明白为什么一个会发生另一个 例如,如果我有 f <- function(x){ print(x) } 只会显示 function(x) print(x) 有时它会进入print方法本身的代码中,我看到方法的分派和 function (x, digits = NULL, quote = TRUE, na.print = NULL, print.gap = NULL, right
debug()
时,它只是逐步遍历该函数,但有时它会跟随调用堆栈向下。我不明白为什么一个会发生另一个
例如,如果我有
f <- function(x){
print(x)
}
只会显示
function(x) print(x)
有时它会进入print方法本身的代码中,我看到方法的分派和
function (x, digits = NULL, quote = TRUE, na.print = NULL, print.gap = NULL,
right = FALSE, max = NULL, useSource = TRUE, ...)
{
noOpt <- missing(digits) && missing(quote) && missing(na.print) &&
missing(print.gap) && missing(right) && missing(max) &&
missing(useSource) && missing(...)
.Internal(print.default(x, digits, quote, na.print, print.gap,
right, max, useSource, noOpt))
}
函数(x,digits=NULL,quote=TRUE,na.print=NULL,print.gap=NULL,
右=假,最大=空,useSource=真,…)
{
noOptdebug
本身永远不会进入调用堆栈-它准确地显示了您正在调试的那些函数,没有更多,也没有更少
在这种特殊情况下,有两个原因使您发现自己处于另一个功能中:
您意外地debug
也忽略了该函数,即调用了debug(print.default)
在调试过程中,您进入了该功能。在R控制台中,当您按s而不是n(“进入”而不是“下一步”)时,会发生这种情况。在RStudio中,有相应的按钮用于任一操作
如果正确设置了options(error)
,或者函数包含对browser()的显式调用,则可能会发生其他可能导致您在另一个函数中发现自己的情况
debug
本身永远不会进入调用堆栈-它准确地向您显示您正在调试的那些函数,没有更多,也没有更少
在这种特殊情况下,有两个原因使您发现自己处于另一个功能中:
您意外地debug
也忽略了该函数,即调用了debug(print.default)
在调试过程中,您进入了该功能。在R控制台中,当您按s而不是n(“进入”而不是“下一步”)时,会发生这种情况。在RStudio中,有相应的按钮用于任一操作
当适当设置了选项(错误)
时,或者当函数包含对浏览器()
的显式调用时,可能会发生其他可能导致在另一个函数中发现自己的情况
function (x, digits = NULL, quote = TRUE, na.print = NULL, print.gap = NULL,
right = FALSE, max = NULL, useSource = TRUE, ...)
{
noOpt <- missing(digits) && missing(quote) && missing(na.print) &&
missing(print.gap) && missing(right) && missing(max) &&
missing(useSource) && missing(...)
.Internal(print.default(x, digits, quote, na.print, print.gap,
right, max, useSource, noOpt))
}