wie Sie wissen, welche Funktionen in R sind für das Debuggen gekennzeichnet?
Frage
Ich habe mit debug()
jetzt öfter, aber manchmal frage ich mich, welche Funktionen für das Debuggen gekennzeichnet wurden. Ich weiß, dass Sie isdebugged()
um herauszufinden, ob eine bestimmte Funktion gekennzeichnet ist verwenden können. Aber gibt es eine Möglichkeit für R zur Liste alle Funktionen, die debuggt werden?
Lösung
Dies ist verworren, aber es funktioniert:
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)
}
Sie können es über alle Ihre Umgebungen laufen wie folgt:
find.debugged.functions()
Oder einfach nur in Ihrem ".GlobalEnv" mit diesem:
> find.debugged.functions(1)
function.name debugged
1 find.debugged.functions FALSE
2 test TRUE
Hier habe ich eine Testfunktion, die ich debuggen.
Andere Tipps
Wenn Sie in so etwas wie das Schreiben einer Funktion erhalten wollte Feuer alles durch isdebugged (), ich glaube nicht, Sie können.
In debug.c ist die Funktion do_debug
was für den DEBUG-Flag überprüft auf einem Objekt gesetzt werden. Es gibt nur drei R-Funktionen, die den do_debug
C-Aufruf rufen: debug
, undebug
und isdebugged