Zoeken…


Gebruik browser

De browser kan worden gebruikt als een breekpunt: de uitvoering van de code wordt gepauzeerd op het punt dat deze wordt genoemd. Vervolgens kan de gebruiker vervolgens variabele waarden inspecteren, willekeurige R-code uitvoeren en regel voor regel door de code bladeren.

Nadat browser() in de code is ingevoerd, wordt de interactieve interpreter gestart. Elke R-code kan normaal worden uitgevoerd en bovendien zijn de volgende opdrachten aanwezig,

Commando Betekenis
c Browser afsluiten en doorgaan met programma
f Huidige lus of functie voltooien \
n Stap over (evalueer volgende instructie, stap over functieoproepen)
s Stap in (evalueer volgende instructie, stap in functieaanroepen)
waar Afdrukken stapel trace
r Roep "hervatten" opnieuw op
Q Browser afsluiten en afsluiten

We hebben bijvoorbeeld een script zoals,

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

toDebug()

Bij het uitvoeren van het bovenstaande script zien we in eerste instantie iets als:

Called from: toDebug
Browser[1]>

We kunnen dan als zodanig communiceren met de prompt,

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() kan ook als onderdeel van een functionele keten worden gebruikt:

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

Debug gebruiken

U kunt elke functie instellen voor foutopsporing met debug .

debug(mean)
mean(1:3)

Alle volgende oproepen voor de functie gaan naar de foutopsporingsmodus. U kunt dit gedrag uitschakelen met undebug .

undebug(mean)
mean(1:3)

Als u weet dat u slechts één keer in de foutopsporingsmodus van een functie wilt gaan, overweeg dan het gebruik van debugonce .

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


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow