Szukaj…


Za pomocą przeglądarki

Funkcji browser można używać jak punktu przerwania: wykonanie kodu zostanie wstrzymane w punkcie, w którym zostanie wywołane. Następnie użytkownik może sprawdzić wartości zmiennych, wykonać dowolny kod R i przechodzić przez kod linia po linii.

Po wciśnięciu browser() w kod uruchomi się interaktywny interpreter. Każdy kod R można uruchomić normalnie, a ponadto dostępne są następujące polecenia,

Komenda Znaczenie
do Wyjdź z przeglądarki i kontynuuj program
fa Zakończ pętlę prądową lub funkcję \
n Step Over (oceń następną instrukcję, krok po kroku wywołania funkcji)
s Step Into (oceń następną instrukcję, wchodząc w wywołania funkcji)
gdzie Drukuj ślad stosu
r Wywołaj restart „resume”
Q Wyjdź z przeglądarki i wyjdź

Na przykład możemy mieć skrypt typu

toDebug <- function() {
    a = 1
    b = 2
    
    browser()
    
    for(i in 1:100) {
        a = a * b
    }
}

toDebug()

Podczas uruchamiania powyższego skryptu początkowo widzimy coś takiego,

Called from: toDebug
Browser[1]>

Możemy wtedy wchodzić w interakcje z monitem,

Called from: toDebug
Browser[1]> a
[1] 1
Browser[1]> b
[1] 2
Browse[1]> n
debug at #7: for (i in 1:100) {
    a = a * b
}
Browse[2]> n
debug at #8: a = a * b
Browse[2]> a
[1] 1
Browse[2]> n
debug at #8: a = a * b
Browse[2]> a
[1] 2
Browse[2]> Q

browser() może być również używany jako część łańcucha funkcjonalnego, na przykład:

mtcars %>% group_by(cyl) %>% {browser()}

Za pomocą debugowania

Możesz ustawić dowolną funkcję debugowania za pomocą debug .

debug(mean)
mean(1:3)

Wszystkie kolejne wywołania funkcji przejdą w tryb debugowania. Możesz wyłączyć to zachowanie za pomocą undebug .

undebug(mean)
mean(1:3)

Jeśli wiesz, że chcesz tylko raz przejść do trybu debugowania funkcji, rozważ użycie debugonce .

debugonce(mean)
mean(1:3)
mean(1:3)


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow