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)