[R] how do you know which functions are being debugged?
Duncan Murdoch
murdoch at stats.uwo.ca
Sat Oct 24 01:06:06 CEST 2009
Gabor Grothendieck wrote:
> On Fri, Oct 23, 2009 at 2:52 PM, Duncan Murdoch <murdoch at stats.uwo.ca> wrote:
>
>> On 10/23/2009 2:49 PM, Andrew Yee wrote:
>>
>>> Thanks everyone for the responses. As a suggestion, wouldn't it be
>>> useful,
>>> that when you run isdebugged() without any parameters, it would just
>>> report
>>> back the functions that are being flagged for debugging?
>>>
>> Could you give an example of what the answer would look like? Not all
>> functions have names, not all names are unique, ...
>>
>>
>
> One could use the formal argument list of the function, i.e. the
> output of args, when there is no notion of name since that is always
> available.
>
It would actually be easier to return a copy of the whole function. But
this wouldn't tell you how to turn off debugging: for example, if an
environment captured a copy of a function with the debugging bit set,
then you really need to know where it was found, not just what was
found. It's tricky to put together examples of this because debug(f)
doesn't act like a normal function, but here's an example showing some
of the weird behaviour:
f <- function(x) x^2
debug(f)
g <- f
# now both g and f have the debug bit set. Should both be returned by
the "showDebugged" function?
undebug(f)
# that unset both. Now undebug(g) would give a warning.
debug(f)
# that set both
f <- function(x) x^2
# Now g has it set, but f doesn't.
In this example, I was doing explicit assignments, but if f had been
passed as an argument to a function, an implicit assignment would be
made to the local variable holding it, and the same sort of behaviour
would result. I think this would be very confusing, and not
particularly helpful, in lots of cases.
I think Steve's suggestion is really the right way to go: if you're
going to be setting lots of debug flags, then keep track of them
yourself, and use your records to unset them.
Duncan Murdoch
More information about the R-help
mailing list