Pergunta

Eu tenho usado debug() mais freqüência agora, mas às vezes me pergunto quais funções foram marcados para depuração. Eu sei que você pode usar isdebugged() para descobrir se uma determinada função é sinalizada. Mas há uma maneira para R listar todas as funções que estão sendo depurado?

Foi útil?

Solução

Esta é complicado, mas funciona:

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

Você pode executá-lo em todos os seus ambientes assim:

find.debugged.functions()

Ou apenas em sua ".GlobalEnv" com esta:

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

Aqui eu criei uma função de teste que estou depuração.

Outras dicas

A menos que você queria entrar em algo como escrever uma função para o fogo tudo através isdebugged (), eu não acho que você pode.

Em debug.c, a função do_debug é o que verifica a sinalizador de depuração sendo definido em um objeto. Existem apenas três funções R que chamam a chamada do_debug C: debug, undebug e isdebugged

.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top