# R: Print Call Stacks

traceback {base} | R Documentation

## Print Call Stacks

### Description

By default `traceback()` prints the call stack of the last uncaught error, i.e., the sequence of calls that lead to the error. This is useful when an error occurs with an unidentifiable error message. It can also be used to print arbitrary lists of deparsed calls.

### Usage

    traceback(x = NULL, max.lines = getOption("deparse.max.lines"))

### Arguments

`x` | `NULL` (default, meaning `.Traceback`), or a list or pairlist of deparsed calls.
`max.lines` | The maximum number of lines to be printed per call. The default is unlimited.

### Details

The stack of the last uncaught error is stored as a list of deparsed calls in `.Traceback`, which `traceback` prints in a user-friendly format. The stack of deparsed calls always contains all function calls and all foreign function calls (such as `.Call`): if profiling is in progress it will include calls to some primitive functions. (Calls to builtins are included, but not to specials.)

Errors which are caught via `try` or `tryCatch` do not generate a traceback, so what is printed is the call sequence for the last uncaught error, and not necessarily for the last error.

### Value

`traceback()` returns nothing, but prints the deparsed call stack deepest call first. The calls may print on more than one line, and the first line for each call is labelled by the frame number. The number of lines printed per call can be limited via `max.lines`.

### Warning

It is undocumented where `.Traceback` is stored nor that it is visible, and this is subject to change. Prior to R 2.4.0 it was stored in the workspace, but no longer.

### References

Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.

### Examples

    foo <- function(x) { print(1); bar(2) }
    bar <- function(x) { x + a.variable.which.does.not.exist }
    ## Not run:
    foo(2) # gives a strange error
    traceback()
    ## End(Not run)
    ## 2: bar(2)
    ## 1: foo(2)
    bar
    ## Ah, this is the culprit ...

[Package base version 2.6.0 Index]