R Language
Le débogage
Recherche…
Utiliser le navigateur
La fonction de browser
peut être utilisée comme un point d'arrêt: l'exécution du code s'interrompt au point appelé. L'utilisateur peut alors inspecter les valeurs de variable, exécuter du code R arbitraire et parcourir le code ligne par ligne.
Une fois que browser()
est entré dans le code, l'interpréteur interactif démarrera. Tout code R peut être exécuté normalement, et les commandes suivantes sont également présentes:
Commander | Sens |
---|---|
c | Quitter le navigateur et continuer le programme |
F | Terminer la boucle ou la fonction en cours \ |
n | Pas à pas (évaluer l'instruction suivante, passer outre les appels de fonctions) |
s | Pas à pas (évaluation de l'instruction suivante, passage aux appels de fonctions) |
où | Trace de pile d'impression |
r | Invoquer "reprendre" redémarrer |
Q | Quittez le navigateur et quittez |
Par exemple, nous pourrions avoir un script comme,
toDebug <- function() {
a = 1
b = 2
browser()
for(i in 1:100) {
a = a * b
}
}
toDebug()
Lors de l'exécution du script ci-dessus, nous voyons initialement quelque chose comme:
Called from: toDebug
Browser[1]>
Nous pourrions alors interagir avec l'invite en tant que telle,
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()
peut également être utilisé dans le cadre d'une chaîne fonctionnelle, comme ceci:
mtcars %>% group_by(cyl) %>% {browser()}
Utiliser le débogage
Vous pouvez définir n'importe quelle fonction pour le débogage avec debug
.
debug(mean)
mean(1:3)
Tous les appels ultérieurs à la fonction entreront en mode débogage. Vous pouvez désactiver ce comportement avec undebug
.
undebug(mean)
mean(1:3)
Si vous savez que vous souhaitez uniquement entrer dans le mode de débogage d'une fonction, envisagez l'utilisation de debugonce
.
debugonce(mean)
mean(1:3)
mean(1:3)