Suche…


Browser verwenden

Die browser kann wie ein Haltepunkt verwendet werden: Die Codeausführung wird an dem Punkt angehalten, an dem sie aufgerufen wird. Der Benutzer kann dann Variablenwerte prüfen, beliebigen R-Code ausführen und den Code Zeile für Zeile durchgehen.

Sobald der browser() im Code gedrückt wird, wird der interaktive Interpreter gestartet. Jeder R-Code kann wie gewohnt ausgeführt werden. Außerdem sind folgende Befehle vorhanden:

Befehl Bedeutung
c Browser verlassen und Programm fortsetzen
f Aktuelle Schleife oder Funktion beenden \
n Step Over (nächste Anweisung auswerten, Funktionsaufrufe übergehen)
s Step Into (nächste Anweisung auswerten, in Funktionsaufrufe einsteigen)
woher Stack-Trace drucken
r Rufen Sie den "Resume" -Start auf
Q Browser verlassen und beenden

Zum Beispiel könnten wir ein Skript haben wie

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

toDebug()

Beim Ausführen des obigen Skripts sehen wir zunächst etwas wie

Called from: toDebug
Browser[1]>

Wir könnten dann mit der Eingabeaufforderung so interagieren,

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() kann auch als Teil einer Funktionskette verwendet werden:

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

Debug verwenden

Sie können eine beliebige Funktion für das Debuggen mit debug einstellen.

debug(mean)
mean(1:3)

Alle nachfolgenden Aufrufe der Funktion werden in den Debugging-Modus versetzt. Sie können dieses Verhalten mit undebug deaktivieren.

undebug(mean)
mean(1:3)

Wenn Sie wissen, dass Sie den Debugging-Modus einer Funktion nur einmal debugonce möchten, sollten Sie debugonce .

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


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow