R Language
felsökning
Sök…
Med hjälp av webbläsare
browser
kan användas som en brytpunkt: körning av kod kommer att pausa vid den punkt den kallas. Sedan kan användaren sedan inspektera variabla värden, köra godtycklig R-kod och gå igenom koden rad för rad.
När browser()
har träffats i koden startar den interaktiva tolken. Varje R-kod kan köras som normalt, och dessutom finns följande kommandon,
Kommando | Menande |
---|---|
c | Avsluta webbläsaren och fortsätt programmet |
f | Slutför aktuell slinga eller funktion \ |
n | Steg över (utvärdera nästa uttalande, stega över funktionssamtal) |
s | Steg in (utvärdera nästa uttalande, gå in i funktionssamtal) |
var | Skriv ut stapelspår |
r | Anropa "återuppta" omstart |
Q | Avsluta webbläsaren och avsluta |
Vi kan till exempel ha ett skript som,
toDebug <- function() {
a = 1
b = 2
browser()
for(i in 1:100) {
a = a * b
}
}
toDebug()
När vi kör ovanstående skript ser vi ursprungligen något som,
Called from: toDebug
Browser[1]>
Vi kunde då interagera med prompten som så,
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 också användas som en del av en funktionell kedja, så:
mtcars %>% group_by(cyl) %>% {browser()}
Med felsökning
Du kan ställa in valfri funktion för felsökning med debug
.
debug(mean)
mean(1:3)
Alla efterföljande samtal till funktionen kommer till felsökningsläge. Du kan inaktivera detta beteende med undebug
.
undebug(mean)
mean(1:3)
Om du vet att du bara vill gå in i felsökningsläget för en funktion en gång ska du överväga att använda debugonce
.
debugonce(mean)
mean(1:3)
mean(1:3)