Rom*_*rik 7 browser debugging r non-interactive
我有一个精心编写的脚本,跨越多个函数(和文件).出于调试目的,我需要将browser调用嵌入到各种角落和缝隙中.当我想要修复一些东西时,我想在没有调试的情况下运行整个事情,而是避免browser调用,因为注释掉所有浏览器调用将意味着我的努力.@mdsumner on R chat建议以非交互模式运行脚本(即在Windows上使用Rscript.exe),但我可以在我的控制台中完成这项工作,以便能够访问traceback.我已经浏览了浏览器文档,我找不到任何可以接近我想要实现的选项.有什么建议?
这里有三个可能性:
1)覆盖浏览器命令.将此命令添加到全局工作空间以关闭浏览器命令:
browser <- list
Run Code Online (Sandbox Code Playgroud)
并重新打开它
rm(browser)
Run Code Online (Sandbox Code Playgroud)
这可能是最简单的,但由于browser变量留在全球环境中,因此有点难看.
接下来的两个解决方案稍长,但使用选项,以便不会在全局环境中引入新变量.此外,如果没有设置选项,则不进行任何调试,因此您只需设置一个选项即可进行调试.该if解决方案可能比更快expr的解决方案,虽然它可能不是物质.
2)使用expr = argument和option.将每个浏览器命令替换为:
browser(expr = isTRUE(getOption("Debug")))
Run Code Online (Sandbox Code Playgroud)
然后定义要打开调试的"Debug"选项TRUE.
options(Debug = TRUE)
Run Code Online (Sandbox Code Playgroud)
或将其设置为其他内容或删除它以关闭调试:
options(Debug = NULL)
Run Code Online (Sandbox Code Playgroud)
3)使用if选项.将每个浏览器命令替换为:
if (isTRUE(getOption("Debug"))) browser()
Run Code Online (Sandbox Code Playgroud)
然后Debug像在前一点中那样设置选项.
| 归档时间: |
|
| 查看次数: |
549 次 |
| 最近记录: |