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