R Language
Depuración
Buscar..
Usando el navegador
La función del browser
se puede utilizar como un punto de interrupción: la ejecución del código se detendrá en el punto en que se llama. Luego, el usuario puede inspeccionar los valores de las variables, ejecutar un código R arbitrario y recorrer el código línea por línea.
Una vez que el browser()
encuentra en el código, se iniciará el intérprete interactivo. Cualquier código R puede ejecutarse normalmente, y además están presentes los siguientes comandos,
Mando | Sentido |
---|---|
do | Salir del navegador y continuar el programa |
F | Terminar bucle o función actual |
norte | Paso a paso (evaluar la siguiente declaración, paso a paso sobre las llamadas de función) |
s | Step Into (evalúa la siguiente declaración, entrando en llamadas a funciones) |
dónde | Seguimiento de la pila de impresión |
r | Invocar reinicio "reanudar" |
Q | Salir del navegador y salir |
Por ejemplo, podríamos tener un script como,
toDebug <- function() {
a = 1
b = 2
browser()
for(i in 1:100) {
a = a * b
}
}
toDebug()
Cuando ejecutamos el script anterior, inicialmente vemos algo como:
Called from: toDebug
Browser[1]>
Entonces podríamos interactuar con el prompt como tal,
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()
también se puede utilizar como parte de una cadena funcional, de esta manera:
mtcars %>% group_by(cyl) %>% {browser()}
Utilizando depuración
Puede configurar cualquier función para la depuración con debug
.
debug(mean)
mean(1:3)
Todas las llamadas posteriores a la función entrarán en el modo de depuración. Puede deshabilitar este comportamiento con undebug
.
undebug(mean)
mean(1:3)
Si sabe que solo desea ingresar al modo de depuración de una función una vez, considere el uso de debugonce
.
debugonce(mean)
mean(1:3)
mean(1:3)