Domanda

Sto usando debug () più spesso ora, ma a volte mi chiedo quali funzioni siano state contrassegnate per il debug. So che puoi usare isdebugged () per scoprire se una particolare funzione è contrassegnata. Ma c'è un modo per R di elencare tutte le funzioni di cui è stato eseguito il debug?

È stato utile?

Soluzione

Questo è contorto, ma funziona:

 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)
 }

Puoi eseguirlo in tutti i tuoi ambienti in questo modo:

find.debugged.functions()

O semplicemente nel tuo " .GlobalEnv " con questo:

 > find.debugged.functions(1)
             function.name debugged
 1 find.debugged.functions    FALSE
 2                    test     TRUE

Qui ho creato una funzione di test di cui sto eseguendo il debug.

Altri suggerimenti

A meno che tu non voglia entrare in qualcosa come scrivere una funzione per sparare tutto con isdebugged (), non penso che tu possa.

In debug.c, la funzione do_debug è ciò che controlla il flag DEBUG impostato su un oggetto. Esistono solo tre funzioni R che chiamano do_debug C call: debug , undebug e isdebugged .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top