From ripley at stats.ox.ac.uk  Fri Feb 18 14:06:23 2011
From: ripley at stats.ox.ac.uk (Prof Brian Ripley)
Date: Fri, 18 Feb 2011 13:06:23 +0000 (GMT)
Subject: [Rd] debugger() fails if "..." in function arguments
In-Reply-To: <3CBFCFB1FEFFA841BA83ADF2F2A9C6FA011A3578@mango-data1.Mango.local>
References: <3CBFCFB1FEFFA841BA83ADF2F2A9C6FA011A3578@mango-data1.Mango.local>
Message-ID: <alpine.LFD.2.02.1102181244360.5129@toucan.stats.ox.ac.uk>

On Fri, 18 Feb 2011, Charles Roosen wrote:

> Dear all,
>
> I'm having a problem with debugger() in both R 2.8.0 and R 2.12.0.
> Probably also versions in-between.

But you are asked to report only on current R.

> I don't see it logged in the bug database, but it's hard for me to
> imagine that no-one else has encountered it.  So my question is whether
> it's a known problem with a workaround, or do I log it as a new problem?

I doubt if almost anyone uses dump.frames() in R.  I think this is 
known, and the workaround is 'don't do that': use error=recover.

> The situation is that if I use "options(error=dump.frames)" and then use
> "debugger()", it fails if there's "..." in the function arguments.
> Repro and version info below.
>
> Thanks,
> Charlie Roosen
>
>> myFunc <- function(a,b,...) {d <- a+b; stop("")}
>> options(error=dump.frames)
>> myFunc(1,2)
> Error in myFunc(1, 2) :
>
>> debugger()
> Message:  Error in myFunc(1, 2) :
> Available environments had calls:
> 1: myFunc(1, 2)
> 2: stop("")
>
> Enter an environment number, or 0 to exit  Selection: 1
> Error in get(.obj, envir = dump[[.selection]]) :
>  argument "..." is missing, with no default

That's easy to fix with a tryCatch() wrapper.  But the real problem is 
with last.dump(), and recover() has it to some extent:

options(error=recover)
myFunc(1,2,e=pi)
Error in myFunc(1, 2, e = pi) :

Enter a frame number, or 0 to exit

1: myFunc(1, 2, e = pi)

Selection: 1
Called from: top level
Browse[1]> e
Error during wrapup: object 'e' not found

If you know how, you can get to 'e' though ....

I am really not sure this is worth changing.

>
>> version
>               _
> platform       i386-pc-mingw32
> arch           i386
> os             mingw32
> system         i386, mingw32
> status
> major          2
> minor          12.0
> year           2010
> month          10
> day            15
> svn rev        53317
> language       R
> version.string R version 2.12.0 (2010-10-15)
>
>
> Charles Roosen, PhD
> Technical Director
>
> T: +41 (0)61 206 92 91
> M: +41 (0)79 248 70 71
> F: +41 (0) 61 206 92 99
>
> www.mango-solutions.com
>
> Mango Solutions AG
> Aeschenvorstadt 36
> 4051 Basel
> Switzerland
>
> image002
>
> LEGAL NOTICE
> This message is intended for the use o...{{dropped:10}}
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>

-- 
Brian D. Ripley,                  ripley at stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595



[Rd] debugger() fails if "..." in function arguments
Prof Brian Ripley