[R] [External] Re: Parser For Line Number Tracing
Ivo Welch
|vo@we|ch @end|ng |rom gm@||@com
Sun Jan 19 18:01:26 CET 2025
understood.
but, please, consider not people like me but unwary beginners and
students of R. I have used R now for decades, and even I am baffled
by it. Couldn't you make R code easier to debug not only for people
like me (who can indeed tweak their environments) but also for novice
users?
On Sun, Jan 19, 2025 at 8:46 AM <luke-tierney using uiowa.edu> wrote:
>
> On Sun, 19 Jan 2025, Ivo Welch wrote:
>
> > Hi Duncan — Wonderful. Thank you. Bug or no bug, I think it would be
> > a huge improvement for user-friendliness if R printed the last line by
> > default *every time* a script dies. Most computer languages do so.
> >
> > Should I file it as a request for improvement to the R code
> > development team? Maybe R can be improved at a very low cost to the
> > development team and a very high benefit to newbies.
>
> No. There are already many ways to influence the way the default error
> handler prints information about errors, mstly via options(). In
> particular you may want to look at entries in ?options for
>
> show.error.locations
> showErrorCalls
> showWarningCalls
>
> and adjust your options settings accordingly.
>
> Best,
>
> luke
>
> >
> > Regards,
> >
> > /ivo
> >
> > On Sun, Jan 19, 2025 at 2:39 AM Duncan Murdoch <murdoch.duncan using gmail.com> wrote:
> >>
> >> On 2025-01-18 8:27 p.m., Ivo Welch wrote:
> >>> I am afraid my errors are worse! (so are my postings. I should have
> >>> given an example.)
> >>>
> >>> ```
> >>> x <- 1
> >>> y <- 2
> >>> nofunction("something stupid I am doing!")
> >>> z <- 4
> >>> ```
> >>>
> >>> and
> >>>
> >>> ```
> >>>> source("where-is-my-water.R")
> >>> Error in nofunction("something stupid I am doing!") :
> >>> could not find function "nofunction"
> >>> ```
> >>>
> >>> and no traceback is available.
> >>
> >> Okay, I see. In that case traceback() doesn't report the line, but it
> >> still is known internally. You can see it using the following function:
> >>
> >> showKnownLocations <- function() {
> >> calls <- sys.calls()
> >> srcrefs <- sapply(calls, function(v) if (!is.null(srcref <- attr(v,
> >>
> >> "srcref"))) {
> >> srcfile <- attr(srcref, "srcfile")
> >> paste0(basename(srcfile$filename), "#", srcref[1L])
> >> } else ".")
> >> cat("Current call stack locations:\n")
> >> cat(srcrefs, sep = " ")
> >> cat("\n")
> >> }
> >>
> >> I haven't done much testing on this, but I think it can be called
> >> explicitly from any location if you want to know how you got there, or
> >> you can set it as the error handler using
> >>
> >> options(error = showKnownLocations)
> >>
> >> For example, try this script:
> >>
> >> options(error = showKnownLocations)
> >> f <- function() showKnownLocations()
> >> x <- 1
> >> f()
> >> y <- 2
> >> nofunction("something stupid I am doing!")
> >> z <- 4
> >>
> >> I see this output from source("test.R"):
> >>
> >> > source("test.R")
> >> Current call stack locations:
> >> . . . . test.R#4 test.R#2
> >> Error in nofunction("something stupid I am doing!") :
> >> could not find function "nofunction"
> >> Current call stack locations:
> >> . . . . test.R#6
> >>
> >> The first report is from the explicit call in f() on line 2 that was
> >> invoked on line 4, and the second report happens during error handling.
> >>
> >> I supppose the fact that traceback() isn't showing you the line 6
> >> location could be considered a bug.
> >>
> >> Duncan Murdoch
> >>
> >>
> >
> > ______________________________________________
> > R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
> > https://stat.ethz.ch/mailman/listinfo/r-help
> > PLEASE do read the posting guide https://www.r-project.org/posting-guide.html
> > and provide commented, minimal, self-contained, reproducible code.
> >
>
> --
> Luke Tierney
> Ralph E. Wareham Professor of Mathematical Sciences
> University of Iowa Phone: 319-335-3386
> Department of Statistics and Fax: 319-335-3017
> Actuarial Science
> 241 Schaeffer Hall email: luke-tierney using uiowa.edu
> Iowa City, IA 52242 WWW: http://www.stat.uiowa.edu/
More information about the R-help
mailing list