Comment savoir quelles fonctions dans R sont marquées pour le débogage?
Question
J'utilise plus souvent debug ()
, mais je me demande parfois quelles fonctions ont été marquées pour le débogage. Je sais que vous pouvez utiliser isdebugged ()
pour savoir si une fonction particulière est marquée. Mais existe-t-il un moyen pour R de répertorier toutes les fonctions en cours de débogage?
La solution
C’est compliqué, mais cela fonctionne:
find.debugged.functions <- function(environments=search()) {
r <- do.call("rbind", lapply(environments, function(environment.name) {
return(do.call("rbind", lapply(ls(environment.name), function(x) {
if(is.function(get(x))) {
is.d <- try(isdebugged(get(x)))
if(!(class(is.d)=="try-error")) {
return(data.frame(function.name=x, debugged=is.d))
} else { return(NULL) }
}
})))
}))
return(r)
}
Vous pouvez l'exécuter dans tous vos environnements, comme suit:
find.debugged.functions()
Ou simplement dans votre " .GlobalEnv " avec ceci:
> find.debugged.functions(1)
function.name debugged
1 find.debugged.functions FALSE
2 test TRUE
Ici, j'ai créé une fonction de test que je suis en train de déboguer.
Autres conseils
À moins que vous ne souhaitiez entrer dans quelque chose comme écrire une fonction pour tout déclencher via isdebugged (), je ne pense pas que vous puissiez le faire.
Dans debug.c, la fonction do_debug
vérifie si l'indicateur DEBUG est défini sur un objet. Il n'y a que trois fonctions R appelant l'appel C do_debug
: debug
, undebug
et isdebugged
.