退出当前浏览器(返回一级)

时间:2012-12-01 19:43:50

标签: r

有时您会将多个browser放入要调试的函数中。我知道你可以用Q退出整个shebang,但如果你想退出第二个浏览器(见下面的代码)并返回第一级浏览器怎么办?我听说过类型c,但不会退出第二级browser

FUN <- function() {
browser()                      #first one
    lapply(1:10, function(x) {
browser()                      #second one
        return(x)
    })
}

FUN()

4 个答案:

答案 0 :(得分:8)

键入c 退出当前的浏览器上下文。

但是,您的代码在执行期间执行一个“第一级”和10个不同的“第二级”浏览器调用。因此,当您退出一个二级浏览器时,您几乎会立即进入 next 一个,因此可能会显示键入c没有不行。

键入c <RETURN> 11次以确认这是发生的事情。

> FUN()
Called from: FUN()
Browse[1]> c
Called from: FUN(1:10[[1L]], ...)
Browse[1]> c
Called from: FUN(1:10[[2L]], ...)
Browse[1]> c
Called from: FUN(1:10[[3L]], ...)
Browse[1]> c
Called from: FUN(1:10[[4L]], ...)
Browse[1]> c
Called from: FUN(1:10[[5L]], ...)
Browse[1]> c
Called from: FUN(1:10[[6L]], ...)
Browse[1]> c
Called from: FUN(1:10[[7L]], ...)
Browse[1]> c
Called from: FUN(1:10[[8L]], ...)
Browse[1]> c
Called from: FUN(1:10[[9L]], ...)
Browse[1]> c
Called from: FUN(1:10[[10L]], ...)
Browse[1]> c

答案 1 :(得分:7)

我同意Josh的意见,并希望建议您使用当前代码的两种替代方法:

1)debugonce:如果我们调用foo您的内部函数,那么debugonce(foo)将仅在第一次调用foo时启动调试器,{{1} }}

x==1

2)FUN <- function() { browser() foo <- function(x)return(x) debugonce(foo) lapply(1:10, foo) } debug。运行undebug后,每次调用debug(foo)时都会启动调试器,直到您运行foo

undebug(foo)

如果您想停止调试FUN <- function() { browser() foo <- function(x)return(x) debug(foo) lapply(1:10, foo) } ,请在点击foo之前键入undebug(foo),然后它会返回到第一级浏览器。

答案 2 :(得分:4)

我在第二个浏览器之后添加qwer(或其他一些不存在的对象)。然后我手动翻阅代码,当我想退出第二个浏览器时,我只需按c。它抛出一个对象不存在的错误。您将被回到第一个浏览器调用。

答案 3 :(得分:0)

运行undebug(yourFunction) 这将终止调试但仍保留在浏览器提示符下 然后键入c和(可能是几次)返回常规命令提示符