Podczas debugowania funkcji wywołujących inne funkcje na wielu poziomach za pomocą przeglądarki często trudno jest określić, na jaki poziom należy wprowadzić do kontroli konkretnej zmiennej. Jest to zagadkowe, gdy funkcje zawierają wywołania generujące poziomy pośrednie. Czy istnieje sposób na wyszukiwanie zmiennej według nazwy na wszystkich poziomach stosu?Wyszukiwanie obiektów w stosie wywołań podczas korzystania z przeglądarki
Załóżmy, że mam poniższe funkcje, powodując błąd w f3
. Zakładam, że wchodząc na poziom 5 powinienem umieć wylistować zawartość dowolnego środowiska nad tym, w którym aktualnie się znajduję, używając argumentów w pewnym sensie, ale nie mogę zrozumieć, jak to zrobić. Jak mogę na przykład szukać v2
?
f1 <- function(){
v1 <- 1
sapply(1:3, f2)
}
f2 <- function(...){
v2 <- 2
f3()
}
f3 <- function(){
v3 <- 3
stop("Oh no!")
}
> options(error=recover)
> f1()
Error in f3() : Oh no!
Enter a frame number, or 0 to exit
1: f1()
2: #3: sapply(1:3, f2)
3: lapply(X = X, FUN = FUN, ...)
4: FUN(1:3[[1]], ...)
5: #3: f3()
Bardzo elegancki, dziękuję! – Backlin