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)


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow