在RStudio中运行Shiny应用程序时,出现以下警告消息:
Warning: Error in : evaluation nested too deeply: infinite recursion /
options(expressions=)?
90: <Anonymous>
我试图将警告变成错误,以便可以看到
options(warn = 2)
但是RStudio崩溃并显示“致命错误”。
我尝试按照此处概述的步骤进行操作:
https://support.rstudio.com/hc/en-us/community/posts/207601737-How-to-debug-a-fatal-error-
将lldb附加到R进程,以便可以看到本机堆栈跟踪,但是附加到R进程也会导致RStudio崩溃,并显示“致命错误”。
我重新启动了R会话,并重新启动了RStudio,但无济于事。
我的设置:
RStudio version 1.1.463
Debug -> On Error -> √ Error Inspector
Tools -> Global Options
[ ] Use debug error handler only when my code contains errors
Tools -> Global Options
[ ] Automatically expand tracebacks in error inspector
如何至少看到递归的堆栈跟踪的一部分?
答案 0 :(得分:0)
为了查看所有被调用的函数,我们可以向全局范围内的每个函数添加跟踪。我将此放在致电shinyApp(...)
之前:
# ... files sourced here ...
globalEnv <- globalenv()
# for some reason, this needs to be skipped
# or else we get an error about no stack trace
funcsToSkip <- c('server')
for (varName in ls(envir = globalEnv)) {
if (varName %in% funcsToSkip) next
varValue <- get(varName, envir = globalEnv)
if (all(class(varValue) == "function")) {
message(paste0("Tracing '", varName, "'"))
trace(varName, where = globalEnv)
}
}
shinyApp(...)
这使我可以看到它无限递归的位置。