R script line numbers at error?


Question

If I am running a long R script from the command line (R --slave script.R), how can I get it to give line numbers at errors?

I don't want to add debug commands to the script if at all possible -- I just want R to behave like most other scripting languages ...

1
96
9/18/2009 5:47:29 PM

Accepted Answer

This won't give you the line number, but it will tell you where the failure happens in the call stack which is very helpful:

traceback()

[Edit:] When running a script from the command line you will have to skip one or two calls, see traceback() for interactive and non-interactive R sessions

I'm not aware of another way to do this without the usual debugging suspects:

  1. debug()
  2. browser()
  3. options(error=recover) [followed by options(error = NULL) to revert it]

You might want to look at this related post.

[Edit:] Sorry...just saw that you're running this from the command line. In that case I would suggest working with the options(error) functionality. Here's a simple example:

options(error = quote({dump.frames(to.file=TRUE); q()}))

You can create as elaborate a script as you want on an error condition, so you should just decide what information you need for debugging.

Otherwise, if there are specific areas you're concerned about (e.g. connecting to a database), then wrap them in a tryCatch() function.

41
5/23/2017 11:47:09 AM

Doing options(error=traceback) provides a little more information about the content of the lines leading up to the error. It causes a traceback to appear if there is an error, and for some errors it has the line number, prefixed by #. But it's hit or miss, many errors won't get line numbers.


Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow
Icon