Appendix C. Debugging and Profiling
This appendix describes some facilities in Emacs for testing and debugging your Lisp programs.
Evaluation
A Lisp expression in any buffer can be evaluated by placing the cursor at the end of the expression and pressing C-x C-e (eval-last-sexp
). The keystroke M-: (eval-expression
) prompts for a Lisp expression to evaluate in the minibuffer. You can also use the commands eval-region
and eval-current-buffer
.
The *scratch*
buffer is normally in Lisp Interaction mode (and if it isn’t, it can be put in that mode with M-x lisp-interaction-mode RET). In that mode, C-j is normally eval-print-last-sexp
, which is like eval-last-sexp
except that it also inserts the result of evaluation into the buffer. Also in Lisp Interaction mode is C-M-x, eval-defun
, which evaluates the “defun” that point is in. The meaning of “defun” in this context is broad; it means the enclosing Lisp expression (if there is one) that begins with an open-parenthesis at the left margin. Finally, Lisp Interaction mode allows you to type partial Lisp symbols and complete them with M-TAB.
Lisp expressions can also be placed in files and loaded with load, load-file, load-library
, and require
.
The Debugger
Emacs Lisp has a built-in debugging mode that can be invoked automatically under certain circumstances. Entering the debugger is controlled as follows.
debug-on-entry
This is a command. It prompts (with completion) for the name of a function. ...
Get Writing GNU Emacs Extensions now with O’Reilly online learning.
O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.