Skip to content

Commit

Permalink
Week 3, lecture 8 notes
Browse files Browse the repository at this point in the history
  • Loading branch information
edj-boston committed Apr 27, 2014
1 parent 92c7126 commit feaac4f
Showing 1 changed file with 81 additions and 0 deletions.
81 changes: 81 additions & 0 deletions week-03/lecture-08-debugging-part-3.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
Debugging - Part 3
==================

traceback()
-----------

> mean(x)
Error in mean(x) : object 'x' not found
> traceback()
1: mean(x)
>

Example:

> lm(y - x)
Error in eval(expr, envir, enclos) : object 'y' not found
> traceback()
7: eval(expr, envir, enclos)
6: eval(prevars, data, env)
5: model.frame.default(formula = y - x, drop.unused.levels = TRUE)
4: model.frame(formula = y - x, drop.unused.levels = TRUE)
3: eval(expr, envir, enclos)
2: eval(mf, parent.frame())
1: lm(y - x)


debug()
-------

> debug(lm)
> lm(y - x)
debugging in: lm(y - x)
debug: {
ret.x <- x
ret.y <- y
cl <- match.call()
if (!qr)
z$qr <- NULL
z
}
Browse[2]> n
debug: ret.x <- x
Browse[2]> n
debug: ret.y <- y
Browse[2]> n
debug: cl <- match.call()
Browse[2]> n
debug: mf <- match.call(expand.dots = FALSE)
Browse[2]> n
debug: m <- match(c("formula", "data", "subset", "weights", "na.action",
"offset"), names(mf), 0L)


recover()
---------

> options(error = recover)
> read.csv('nosuchfile')
Error in file(file, "rt") : cannot open the connection
In addition: Warning message:
In file(file, "rt") :
cannot open file 'nosuchfile': No such file or directory

Enter a frame number, or 0 to exit

1: read.csv("nosuchfile")
2: read.table(file = file, header = header, sep = sep, quote = quote, dec = dec, fil
3: file(file, "rt")

Selection:


Summary
-------

* There are three main indications of a problem/condition: message, warning, error
* Only an error is fatal
* When analyzing a function with a problem, make sure you can reproduce the problem. clearly state your expectations and how the output differs from your expectation
* Interactive debugging tools traceback, debug, browser, trace, and recover can be used to find problematic code in functions
* Debugging tools are not a substitute for thinking!

0 comments on commit feaac4f

Please sign in to comment.