[Rd] [R] step by step debugger in R?
Simon Urbanek
simon.urbanek at r-project.org
Mon May 25 11:19:28 CEST 2009
On May 24, 2009, at 10:18 AM, Romain Francois wrote:
> Robert Gentleman wrote:
>> Hi,
>> I stripped the cc's as I believe that all read this list.
>>
>> Romain Francois wrote:
>>
>>> [moving this to r-devel]
>>>
>>> Robert Gentleman wrote:
>>>
>>>> Hi,
>>>>
>>>> Romain Francois wrote:
>>>>
>>>>> Duncan Murdoch wrote:
>>>>>
>>>>>> On 5/22/2009 10:59 AM, Michael wrote:
>>>>>>
>>>>>>> Really I think if there is a Visual Studio strength debugger,
>>>>>>> our
>>>>>>> collective time spent in developing R code will be greatly
>>>>>>> reduced.
>>>>>>>
>>>>>> If someone who knows how to write a debugger plugin for Eclipse
>>>>>> wants
>>>>>> to help, we could have that fairly easily. All the
>>>>>> infrastructure is
>>>>>> there; it's the UI part that's missing.
>>>>>>
>>>>>> Duncan Murdoch
>>>>>>
>>>>> [I've copied Mark Bravington and Robert Gentleman to the list as
>>>>> they
>>>>> are likely to have views here, and I am not sure they monitor R-
>>>>> help]
>>>>>
>>>>> Hello,
>>>>>
>>>>> Making a front-end to debugging was one of the proposed google
>>>>> summer of
>>>>> code for this year [1], it was not retained eventually, but I am
>>>>> still
>>>>> motivated.
>>>>>
>>>>> Pretty much all infrastructure is there, and some work has been
>>>>> done
>>>>> __very recently__ in R's debugging internals (ability to step
>>>>> up). As I
>>>>> see it, the ability to call some sort of hook each time the
>>>>> debugger
>>>>> waits for input would make it much easier for someone to write
>>>>>
>>>> I have still not come to an understanding of what this is
>>>> supposed to
>>>> do? When
>>>> you have the browser prompt you can call any function or code you
>>>> want
>>>> to. There
>>>> is no need for something special to allow you to do that.
>>>>
>>> Sure. What I have in mind is something that gets __automatically__
>>> called, similar to the task callback but happening right before
>>> the user
>>> is given the browser prompt.
>>>
>>
>> I am trying to understand the scenario you have in mind. Is it that
>> the user is
>> running R directly and your debugger is essentially a helper
>> function that gets
>> updated etc as R runs?
>>
> yes. there are now several ui toolkits that could be use to give
> some sort of graphical representation of what is being debugged.
>
> I agree with you that and IDE should command R and not the other way
> around, but I am not (yet) here talking about a fully featured IDE,
> but simply a debugger.
>
> I need to read more about embedding R (as in section 8 of WRE). I
> know you can supply your own implementation of the REPL, but I am
> not sure this includes the one that goes on once trapped into the
> browser.
Yes - it would be quite useless otherwise ;) there are many examples
of GUIs that use it (including the built-in ones [Windows, MAc, ..] or
external ones e.g JGR).
Cheers,
S
> For example littler ships its own REPL, but this does not seem to
> fool/deal with browser:
>
> $ r -e "print(1:10); browser(); print(1:5) "
> [1] 1 2 3 4 5 6 7 8 9 10
> Called from: NULL
> c
> [1] 1 2 3 4 5
>
> Not sure this is an omission of Jeffrey and Dirk or something else.
>
>> If so, then I don't think that works very well and given the
>> constraints we
>> have with R I don't think it will be able to solve many of the
>> problems that an
>> IDE should. The hook you want will give you some functionality,
>> but no where
>> near enough.
>>
>
> In the long run, I do agree. In the short run, I'd prefer taking the
> bus to the airport rather than walk.
>
>> Let me suggest instead that the IDE should be running the show. It
>> should
>> initialize an instance of R, but it controls all communication and
>> hence
>> controls what is rendered on the client side. If that is what you
>> mean by
>> embedding R, then yes that is what is needed. There is no way that
>> I can see to
>> support most of the things that IDE type debuggers support without
>> the IDE
>> controlling the communication with R.
>>
>> And if I am wrong about what your debugger will look like please
>> let me know.
>>
>> best wishes
>> Robert
>>
>>
>>
>>>>> front-ends. A recent post of mine (patch included) [2] on R-devel
>>>>> suggested a custom prompt for browser which would do the trick,
>>>>> but I
>>>>> now think that a hook would be more appropriate. Without something
>>>>> similar to that, there is no way that I know of for making a
>>>>> front-end,
>>>>> unless maybe if you embed R ... (please let me know how I am
>>>>> wrong)
>>>>>
>>>> I think you are wrong. I can't see why it is needed. The external
>>>> debugger has
>>>> lots of options for handling debugging. It can rewrite code (see
>>>> examples in
>>>> trace for how John Chambers has done this to support tracing at a
>>>> location),
>>>> which is AFAIK a pretty standard approach to writing debuggers.
>>>> It can
>>>> figure
>>>> out where the break point is (made a bit easier by allowing it to
>>>> put
>>>> in pieces
>>>> of text in the call to browser). These are things the internal
>>>> debugger can't do.
>>>>
>>>>
>>> Thanks. I'll have another look into that.
>>>
>>>
>>>>> There is also the debug package [3,4] which does __not__ work
>>>>> with R
>>>>> internals but rather works with instrumenting tricks at the R
>>>>> level.
>>>>> debug provides a tcl/tk front-end. It is my understanding that
>>>>> it does
>>>>> not work using R internals (do_browser, ...) because it was not
>>>>> possible
>>>>> at the time, and I believe this is still not possible today, but
>>>>> I might
>>>>> be wrong. I'd prefer to be wrong actually.
>>>>>
>>>> I don't understand this statement. It has always been possible to
>>>> work with
>>>> the internal version - but one can also take the approach of
>>>> rewriting
>>>> code.
>>>> There are some difficulties supporting all the operations that one
>>>> would like by
>>>> rewriting code and I think a combination of external controls and
>>>> the
>>>> internal
>>>> debugger will get most of the functionality that anyone wants.
>>>>
>>>> There are somethings that are hard and once I have a more complete
>>>> list I will
>>>> be adding this to the appropriate manual. I will also be
>>>> documenting
>>>> the changes
>>>> that I have been making, but that project is in flux and won't be
>>>> done
>>>> until the
>>>> end of August, so people who want to look at it are welcome (it
>>>> is in
>>>> R-devel),
>>>> but it is in development and could change pretty much without
>>>> notice.
>>>> Romain noted that we now support stepping out from one place to
>>>> another
>>>> function. We also have a debugonce flag that lets you get close to
>>>> step in, but
>>>> step in is very hard in R.
>>>>
>>>> I am mostly interested in writing tools in R that can be used by
>>>> anyone that
>>>> wants to write an external debugger and am not that interested in
>>>> any
>>>> particular
>>>> external debugger. I would be happy to listen to feature requests
>>>> or
>>>> issues that
>>>> arise - but the discussion should probably be on R-devel mailing
>>>> list.
>>>>
>>>> best wishes
>>>> Robert
>>>>
>>>>
>>>>
>>>>> Romain
>>>>>
>>>>> [1] : http://www.r-project.org/soc09/ideas.html#p5
>>>>> [2] : https://stat.ethz.ch/pipermail/r-devel/2009-April/
>>>>> 053128.html
>>>>> [3] : http://cran.r-project.org/web/packages/debug/index.html
>>>>> [4] : http://cran.r-project.org/doc/Rnews/Rnews_2003-3.pdf
>>>>>
>>>>>
>>>>
>>>
>>
>>
>
>
> --
> Romain Francois
> Independent R Consultant
> +33(0) 6 28 91 30 30
> http://romainfrancois.blog.free.fr
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>
>
More information about the R-devel
mailing list