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)


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow