使用命令行进行 Rscript 调试

Ton*_*Qiu 5 debugging r command-line-interface

我想知道是否有人知道如何使用命令行在 linux 环境中调试 R 脚本。例如,在python中我们可以使用pdb。我们首先设置一个断点(pdb.set_trace()),然后我们就可以使用'c'、'n'、's'、'b'等命令在linux环境下调试python代码。找了很多关于R调试的资料,至今没有在R中找到类似的功能,非常感谢大家的帮助!

jpd*_*527 0

readLines没有在命令行中调试 Rscript 的本机方法,但您可以使用我用和提出的一种黑客解决方法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...")
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

使用 Rscript 调用的 R 文件中的示例用法:

ipdbrtest.R

a <- 3
print(a)
ipdb.r()
print(a)
Run Code Online (Sandbox Code Playgroud)

命令行:

$ 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
Run Code Online (Sandbox Code Playgroud)

我鼓励任何使用它的人扩展它以获得更好的调试功能。