从 do.call 内部调用时,R/Rstudio 中的调试浏览器崩溃



根据这个问题,调试器浏览器在从do.call语句中调用它时不会向我显示它在哪里停止。首先,它将所有参数打印到控制台,然后通常浏览器无响应,除了强制退出 RStudio 之外别无选择。有没有人有任何等效的经验,可以指出任何修复?

这似乎也描述了一个类似的问题。

这可能是因为您已将某个数据集传递给名为 usingdo.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调用的函数中进行调试时因打印已解析的函数调用而导致挂起。

已发现 Rstudio 存在一个错误,即使设置了这些选项,该错误也会导致其挂起。可以在 R 控制台中或使用其他工具调试此代码。

最新更新