嵌套浏览器调用 - 仅退出单个上下文

时间:2013-10-22 15:09:09

标签: r debugging

UPDATE:

我个人认为这个问题是重复的,因为这个问题似乎与@ TylerRinker的问题几乎相同。但是,我仍然会考虑这个具体问题未答复 。虽然我喜欢debug/debugonce那些不同(尽管非常有用)的工具,但我仍然对如何控制browser上下文感到好奇。

________________________________________________________________

原始问题:

调试时,从另一个browser上下文中进入browser上下文很容易且通常很有帮助。当从迭代循环调用嵌套级别时,退出到前一个上下文需要单步执行每次迭代。 退出所有 Q上下文中的browser退出。

问题是:

有没有办法指定要退出的上下文而无需在较低的上下文中手动进行所有迭代?

在下面的示例中,这意味着返回Browse [1]而无需点击c 100次

我使用的两个要么是要的 (1)修改迭代次数或
(2)使用Q,再次调用我的原始函数,然后前进到我以前的位置 既不构成“伟大”,也不构成“好”。


示例:

outerFunc <- function() { 
  # < ... cropped .. >
  browser()
  # < ... cropped .. >
}

outerFunc()
lapply(seq(100), function(i) browser(text=paste("i is #", i)))

这是演练

> outerFunc()
Called from: outerFunc()
Browse[1]> lapply(seq(100), browser)
Called from: lapply(seq(100), browser)
Browse[2]> c
Called from: lapply(seq(100), browser)
Browse[2]> c
Called from: lapply(seq(100), browser)
Browse[2]> c
Called from: lapply(seq(100), browser)
Browse[2]> Q    # <~~~~~~  `Q` quits all contexts
> 

1 个答案:

答案 0 :(得分:6)

这是一个可能有点讨厌的想法,它利用browser()的{​​{1}}参数来允许您随时关闭循环中的浏览。

expr=