rcommand-linerscript

Is there a way to debug an R script run from the command line with Rscript.exe


Is it possible to debug an R source file which is executed with Rscript.exe?

> Rscript.exe mysource.R various parameters

Ideally, I would like to be able to set a break-point somewhere in the mysource.R file in RStudio. Is entering the R debugger directly at the command line possible for instance by adding some debug directive to the source file?

Maybe sourcing the file from R would work? How? How do I pass the command line arguments "various parameters" so that commandArgs() returns the correct values?

The mysource.R could look as follows (in practice it is much more complicated).

#!/usr/bin/Rscript

args <- commandArgs(trailingOnly=TRUE)
print(args)




Solution

  • As far as debugging from console is concerned there are few questions related to it without an answer.

    Is there a way to debug an RScript call in RStudio? and Rscript debug using command line

    So, I am not sure if something has changed and if it is now possible.

    However, we can debug from sourcing the file by using a hack. You could add browser() in the file wherever you want to debug. Consider your main file as :

    main.R

    args <- commandArgs(trailingOnly=TRUE)
    browser()
    print(args)
    

    Now, we can override the commandArgs function and pass whatever arguments we want to pass which will be passed when you source the file.

    calling_file.R

    commandArgs <- function(...) list(7:9, letters[1:3])
    source("main.R")
    

    After running the source command, you could debug from there

    Called from: eval(ei, envir)
    #Browse[1]> args
    #[[1]]
    #[1] 7 8 9
    
    #[[2]]
    #[1] "a" "b" "c"