通常,当我在R中的函数上调用debug()
时,它只是逐步执行该函数,但有时它会跟随调用堆栈。我无法弄清楚为什么一个发生与另一个发生。
例如,如果我有
f <- function(x){
print(x)
}
通常正在运行
debug(f)
f("Hello World")
只会显示
function(x) print(x)
有时它会进入print方法本身的代码,我看到方法dispatch和
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))
}
这对调试我编写的函数没有帮助。有谁知道如何选择debug()
进入调用堆栈?谢谢!
答案 0 :(得分:0)
debug
本身永远不会进入调用堆栈 - 它会向您显示那些debug
ging的函数,仅此而已。
在这种特殊情况下,您有两个原因可以找到自己的另一个功能:
debug
也称这个功能,即你打电话给debug(print.default)
。当适当地设置options(error)
时,或者当函数包含对browser()
的显式调用时,可能会导致发现自己在另一个函数内部的其他事情。