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

Romain Francois romain.francois at dbmail.com
Tue May 26 18:57:17 CEST 2009


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'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
>>>>
>>>
>>
>>
>


-- 
Romain Francois
Independent R Consultant
+33(0) 6 28 91 30 30
http://romainfrancois.blog.free.fr



More information about the R-devel mailing list