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)