'Rscript debug using command line

I wonder if anyone knows how to debug R script in a linux environment using command line. For example, in python we can use pdb. We first set a break point (pdb.set_trace()), we then can use command like 'c','n','s','b', etc. to debug the python code in the linux environment. I have been searching lots of information for R debugging, but so far I did not find a similar function in R. Thank you very much for your help!



Solution 1:[1]

There's no native way to debug Rscript in the command line, but you can use a kind of hacky workaround I whipped up with readLines and eval.

ipdb.r <- function(){
  input <- ""
  while(!input %in% c("c","cont","continue"))
  {
    cat("ipdb.r>")
    # stdin connection to work outside interactive session
    input <- readLines("stdin",n=1)
    if(!input %in% c("c","cont","continue","exit"))
    {
      # parent.frame() runs command outside function environment
      print(eval(parse(text=input),parent.frame()))
    }else if(input=="exit")
    {
      stop("Exiting from ipdb.r...")
    }
  }
}

Example usage in an R file to be called with Rscript:

ipdbrtest.R

a <- 3
print(a)
ipdb.r()
print(a)

Command line:

$ Rscript ipdbrtest.R
[1] 3
ipdb.r>a+3
[1] 6
ipdb.r>a+4
[1] 7
ipdb.r>a <- 4
[1] 4
ipdb.r>c
[1] 4

I would encourage anybody using this to expand upon it for greater debugging functionality.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 jpd527