Description
Set, unset or query the debugging flag on a function.
The text
and condition
arguments are the same as those
that can be supplied via a call to browser
. They can be retrieved
by the user once the browser has been entered, and provide a mechanism to
allow users to identify which breakpoint has been activated.Usage
debug(fun, text = "", condition = NULL)
debugonce(fun, text = "", condition = NULL)
undebug(fun)
isdebugged(fun)
debuggingState(on = NULL)
Arguments
fun
any interpreted R function.
text
a text string that can be retrieved when the browser is entered.
condition
a condition that can be retrieved when the browser is entered.
on
logical; a call to the support function
debuggingState
returns TRUE
if debugging is globally
turned on, FALSE
otherwise. An argument of one or the other
of those values sets the state. If the debugging state is
FALSE
, none of the debugging actions will occur (but explicit
browser
calls in functions will continue to work). Details
When a function flagged for debugging is entered, normal execution
is suspended and the body of function is executed one statement at a
time. A new browser context is initiated for each step (and the
previous one destroyed). At the debug prompt the user can enter commands or R expressions,
followed by a newline. The commands are described in the
browser
help topic. To debug a function which is defined inside another function,
single-step though to the end of its definition, and then call
debug
on its name. If you want to debug a function not starting at the very beginning,
use trace(..., at = *)
or setBreakpoint
. Using debug
is persistent, and unless debugging is turned off
the debugger will be entered on every invocation (note that if the
function is removed and replaced the debug state is not preserved).
Use debugonce
to enter the debugger only the next time the
function is invoked. In order to debug S4 methods (see Methods
), you
need to use trace
, typically calling browser
,
e.g., as
trace("plot", browser, exit = browser, signature = c("track", "missing"))
The number of lines printed for the deparsed call when a function is
entered for debugging can be limited by setting
options(deparse.max.lines)
. When debugging is enabled on a byte compiled function then the
interpreted version of the function will be used until debugging is
disabled.