使用浏览器()在R中调试

时间:2018-04-11 06:34:27

标签: r debugging

以下说明来自browser()帮助页面。

有谁可以给​​出更好的解释?什么被定义为“外部浏览水平”?是在函数中使用browser()吗?

  

浏览器提示的格式为Browse [n]>:此处var {n}表示“浏览器级别”。浏览时可以调用浏览器(通常是在使用调试时),每次递归调用都会增加数量。 (实际数字是上下文堆栈中'contexts'的数量:对于外部浏览级别通常为2,在调试器中检查转储时为1。)

编辑:

fun <- function(x, y)
+ {
+   z <- x + y
+   browser()
+   a <- z^2
+   b <- sqrt(z)
+ }
> fun(5, 4)
Called from: fun(5, 4)
Browse[1]> 

使用Browse[1]>,我们可以查看zxy值。当我点击Enter时:

> fun <- function(x, y)
+ {
+   z <- x + y
+   browser()
+   a <- z^2
+   b <- sqrt(z)
+ }
> fun(5, 4)
Called from: fun(5, 4)
Browse[1]> x
[1] 5
Browse[1]> y
[1] 4
Browse[1]> z
[1] 9
Browse[1]> 
debug at #5: a <- z^2
Browse[2]> 

Browser[1]增加到Browser[2]有什么好处?

1 个答案:

答案 0 :(得分:1)

使用示例:

f1 <- function(x) { browser(); x <- 1 }
f2 <- function(x) { browser(); x <- 2 }
f3 <- function(x) { browser(); x <- 3 }

f1(5)

...在从命令行f1()调用f2(7)进行浏览时... 还可以使用调试器的命令,例如在提示符下键入 n