f <- function(a) g(a)
g <- function(b) h(b)
h <- function(c) i(c)
i <- function(d) {
if (!is.numeric(d)) {
stop("`d` must be numeric", call. = FALSE)
}
}
traceback()
browser()
Next, n: executes the next step in the function. If you have a variable named n, you’ll need print(n) to display its value.
Step into, or s: works like next, but if the next step is a function, it will step into that function so you can explore it interactively.
Finish, or f: finishes execution of the current loop or function.
Continue, c: leaves interactive debugging and continues regular execution of the function. This is useful if you’ve fixed the bad state and want to check that the function proceeds correctly.
Stop, Q: stops debugging, terminates the function, and returns to the global workspace. Use this once you’ve figured out where the problem is, and you’re ready to fix it and reload the code.
options(error = NULL)
options(error = recover)
debug() inserts a browser statement in the first line of the specified function. undebug() removes it. Alternatively, you can use debugonce() to browse only on the next run.
source("test2.R")
findLineNum("test2.R",5)
utils::setBreakpoint("test2.R", 2)
trace()
untrace()
http://r-pkgs.had.co.nz/src.html#src-debugging
https://github.com/wch/r-debug/blob/master/debugging-r.md
http://kevinushey.github.io/blog/2015/04/05/debugging-with-valgrind/
https://www.jimhester.com/2018/08/22/debugging-rstudio/
install("DESeq2", keep_source=TRUE)
https://adv-r.hadley.nz/debugging.html
https://stackoverflow.com/questions/48934886/how-do-i-keep-source-files-when-using-rs-devtools-library-function-install