【问题标题】:Crash of debugging browser in R/Rstudio when called from inside do.call从 do.call 内部调用时在 R/Rstudio 中调试浏览器崩溃
【发布时间】:2021-01-21 02:14:33
【问题描述】:

根据this question,当从 do.call 语句中调用它时,调试器浏览器不会向我显示它停止的位置。首先它将所有参数打印到控制台,然后浏览器通常没有响应,除了强制退出 RStudio 之外别无选择。有没有人有任何类似的经验并且可以指出任何修复?

This 似乎也描述了类似的问题。

【问题讨论】:

    标签: r debugging


    【解决方案1】:

    这很可能是因为您已将一些数据集传递给使用do.call 调用的函数。发生错误时,R 的默认行为是进入调试模式并打印整个函数调用以获取上下文。但是,由于do.call 在调用函数之前会解析每个参数,这可能会导致语句很长,从而导致 R 挂起。

    为了限制进入browser()模型调试时返回的调用长度,可以设置最大解析长度:

    options(deparse.max.lines = 10)
    

    从 R 4.0 开始,您可以通过设置选项 traceback.max.lines 来限制进入调试模式时打印的函数调用的长度而不改变 deparse() 的其他用途:

    options(traceback.max.lines = 10)
    

    这应该可以防止在 do.call 调用的函数中进行调试时打印已解析的函数调用导致的挂起。

    即使设置了这些选项,bug has been identified with Rstudio 也会导致其挂起。您或许可以在 R 控制台中或使用其他工具调试此代码。

    【讨论】:

      猜你喜欢
      • 2012-11-02
      • 1970-01-01
      • 1970-01-01
      • 2015-07-15
      • 2021-08-16
      • 1970-01-01
      • 1970-01-01
      • 2016-04-25
      • 1970-01-01
      相关资源
      最近更新 更多