2009-10-23 13 views

Odpowiedz

7

to zawiłe, ale to działa:

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

Można uruchomić ją we wszystkich środowiskach tak:

find.debugged.functions() 

lub po prostu w ".GlobalEnv" z tym:

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

Tutaj utworzyłem funkcję testową, którą debuguję.

2

Chyba że chciałeś dostać się do czegoś takiego jak napisanie funkcji do wywołania wszystkiego przez isdebugged(), nie sądzę, że możesz.

W debug.c funkcja do_debug sprawdza, jaka flaga DEBUG jest ustawiona na obiekcie. Istnieją tylko trzy funkcje R, które wywołują wywołanie do_debug C: debug, i isdebugged.

Powiązane problemy