你怎么知道R中哪些函数被标记为调试?

and*_*ewj 7 debugging r

debug()现在经常使用,但有时我想知道哪些函数已被标记为调试.我知道你可以isdebugged()用来查明某个特定功能是否被标记.但是R有没有办法列出所有正在调试的函数?

Sha*_*ane 8

这很复杂,但它有效:

 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)
 }
Run Code Online (Sandbox Code Playgroud)

您可以在所有环境中运行它,如下所示:

find.debugged.functions()
Run Code Online (Sandbox Code Playgroud)

或者只是在你的".GlobalEnv"中:

 > find.debugged.functions(1)
             function.name debugged
 1 find.debugged.functions    FALSE
 2                    test     TRUE
Run Code Online (Sandbox Code Playgroud)

在这里,我创建了一个我正在调试的测试函数.