UPDATE:
Я лично отметил этот вопрос как дубликат, так как этот вопрос кажется почти идентичным тому, что @TylerRinker's. Тем не менее, , я бы по-прежнему рассматривал этот конкретный вопрос без ответа. Хотя мне нравится 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
>