R Language
Debugging
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)