[Rd] Can a function know what other function called it?

Duncan Murdoch murdoch at stats.uwo.ca
Tue May 26 22:52:16 CEST 2009


On 5/26/2009 12:57 PM, Romain Francois wrote:
> Duncan Murdoch wrote:
>> On 5/24/2009 10:23 AM, Romain Francois wrote:
>>> Duncan Murdoch wrote:
>>>> On 23/05/2009 4:55 PM, Robert Gentleman wrote:
>>>>> Kynn Jones wrote:
>>>>>
>>> [snip]
>>>>>
>>>>>   and you have a breakpoint in bar, you could not (easily) 
>>>>> distinguish which of
>>>>> the two calls to bar was active. There is no line counter or 
>>>>> anything of that
>>>>> sort available.
>>>>
>>>> The evaluator doesn't pay any attention to srcref records, so this 
>>>> is still true, but it would be possible to keep the srcref on the 
>>>> stack as well as all the other info there.
>>>
>>> Please
>>
>> Here's a patch file that does this.  (Will it make it through to the 
>> mailing list?  We'll see.)  It's still in progress, so I'm not even 
>> ready to put it into R-devel, but you're welcome to try it out.
>>
>> The basic idea is that it attaches srcref attributes to the values 
>> returned from sys.calls (which won't be displayed, but if you want to 
>> play with them you can) and to .Traceback (which traceback() will 
>> display).  debug() will also show them.
>>
>> Not sure what bad side effects (e.g. on execution time) this has.
>>
>> Duncan Murdoch
> 
> Many thanks. I'll play with this right now. My guess is that since these 
> "srcref" records are calculated anyway by the parser, this won't affect 
> too much the execution time.

I have now committed a more complete version of the code to R-devel. 
It's still "experimental"; formats of the displays are likely to change, 
and the internal structures might.

This is likely to disrupt front-ends that expect a particular format 
from tracebacks or the debugger; hopefully the added information will 
make up for the inconvenience.

Duncan Murdoch

> 
>>
>>>
>>>>
>>>> I've written code (and I think I sent it to you last year) that can 
>>>> do things like replacing the statement coming from a particular line 
>>>> of a file with whatever code you like; this could be used in writing 
>>>> a nice source-level debugger.
>>>
>>> yes
>>>
>>>>
>>>> Duncan Murdoch
>>>>
>>>>>
>>>>>  best wishes
>>>>>    Robert
>>>>>
>>>>
>>>
>>>
>>
> 
>



More information about the R-devel mailing list