Comment savoir quelles fonctions dans R sont marquées pour le débogage?

StackOverflow https://stackoverflow.com/questions/1614889

  •  06-07-2019
  •  | 
  •  

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?

Était-ce utile?

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 .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top