debug {base} | R Documentation

## Debug a Function

### Description

Set or unset the debugging flag on a function.

### Usage

    debug(fun)
    undebug(fun)

### Arguments

`fun` | any interpreted R function.

### 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. The commands are

`n`
  (or just return). Advance to the next step.
`c`
  continue to the end of the current context: e.g. to the end of the loop if within a loop or to the end of the function.
`cont`
  synonym for `c`.
`where`
  print a stack trace of all active function calls.
`Q`
  exit the browser and the current evaluation and return to the top-level prompt.

(Leading and trailing whitespace is ignored, except for return).

Anything else entered at the debug prompt is interpreted as an R expression to be evaluated in the calling environment: in particular typing an object name will cause the object to be printed, and `ls()` lists the objects in the calling frame. (If you want to look at an object with a name such as `n`, print it explicitly.)

If a function is defined inside a function, single-step though to the end of its definition, and then call `debug` on its name.

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"))`

### See Also

`browser`, `trace`; `traceback` to see the stack after an `Error: ...` message; `recover` for another debugging approach.

[Package base version 2.6.0 Index]