Ask debugger R not to cut stack calls

I would like to debug the following function, but suppose it is useful to see that the moreajaj argument is equal (albeit not as obvious as in this far-fetched example) when in the debugger. I could print it in a debugger frame, but it is annoying to do this in every frame for each argument. How can I make the full argument invoke printing in the debugger when declaring each frame?

options(error = dump.frames)

#### suppose I do not see the function definitions, only see debugger below
some_function <- function(...) {
  stop('give error')
}

willGiveError <- function() {
  some_function(alongargument = "some long kind of default", anotherlongargument = "more long default something as example", moreajaj = "kdjflksdjf")
}

outerFunction <- function() willGiveError()

outerFunction()

# Error in some_function(alongargument = "some long kind of default", anotherlongargument = "more long default something as example",  : 
#   give error
> debugger()
# Message:  Error in some_function(alongargument = "some long kind of default", anotherlongargument = "more long default something as example",  : 
#   give error
# Available environments had calls:
# 1: outerFunction()
# 2: #1: willGiveError()
# 3: #2: some_function(alongargument = "some long kind of default", another
# 4: #2: stop("give error")
# 
# Enter an environment number, or 0 to exit  Selection: 

As you can see above at the output of the debugger, it is cut after the “other” in frame 2, where I would like to see anotherlongargument = "more long default something as example", moreajaj = "kdjflksdjf")

+4
source share
2 answers

Textual representations of these calls are truncated during the evaluation dump.frames()of his calls limitedLabels().

- , ( ) maxwidth= limitedLabels().

## Identical to dump.frames _except_ for addition of maxwidth=10000 argument
my.dump.frames <- 
function (dumpto = "last.dump", to.file = FALSE) 
{
    calls <- sys.calls()
    last.dump <- sys.frames()
    names(last.dump) <- limitedLabels(calls, maxwidth=10000)  # <-- edited line
    last.dump <- last.dump[-length(last.dump)]
    attr(last.dump, "error.message") <- geterrmessage()
    class(last.dump) <- "dump.frames"
    if (dumpto != "last.dump") 
        assign(dumpto, last.dump)
    if (to.file) 
        save(list = dumpto, file = paste(dumpto, "rda", sep = "."))
    else assign(dumpto, last.dump, envir = .GlobalEnv)
    invisible()
}

dump.frames , , R.

options(error=my.dump.frames)

, , , :

debugger()
# Message:  Error in some_function(alongargument = "some long kind of default", anotherlongargument = "more long default something as example",  : 
#   give error
# Available environments had calls:
# 1: outerFunction()
# 2: #1: willGiveError()
# 3: #2: some_function(alongargument = "some long kind of default", anotherlongargument = "more long default something as example", moreajaj = "kdjflksdjf")
# 4: #2: stop("give error")
# 
# Enter an environment number, or 0 to exit  Selection: 
+6

traceback() debugger():

> traceback()
4: stop("give error") at #2
3: some_function(alongargument = "some long kind of default", anotherlongargument = "more long default something as example", 
       moreajaj = "kdjflksdjf") at #2
2: willGiveError() at #1
1: outerFunction()

, last.dump ( debugger()) :

> getOption("width")
[1] 80

, ( , ) last.dump:

> options(width = 1000)
> outerFunction()
> debugger()
Message:  Error in some_function(alongargument = "some long kind of default", anotherlongargument = "more long default something as example",  : 
  give error
Available environments had calls:
1: outerFunction()
2: #1: willGiveError()
3: #2: some_function(alongargument = "some long kind of default", anotherlongargument = "more long default something as example", moreajaj = "kdjflksdjf")
4: #2: stop("give error")

, .

+1

All Articles