2009-10-23 4 views

답변

7

이 복잡하지만, 그것을 작동 :

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

당신과 같이 모든 환경에서 실행할 수 있습니다 :

find.debugged.functions() 

아니면 그냥이와 ".GlobalEnv"에서을 :

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

여기서 디버깅 할 테스트 함수를 만들었습니다.

2

당신이 isdebugged()를 통해 모든 것을 발사하는 함수를 작성하는 것과 같은 것을하고 싶지 않다면, 나는 할 수 있다고 생각하지 않는다.

debug.c에서 do_debug 함수는 개체에 설정된 DEBUG 플래그를 검사합니다. do_debug C 호출을 호출하는 R 함수는 세 가지입니다 (debug, undebugisdebugged).

관련 문제