Appendix C. Debugging and Profiling
This appendix describes some facilities in Emacs for testing and debugging your Lisp programs.
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
*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
Emacs Lisp has a built-in debugging mode that can be invoked automatically under certain circumstances. Entering the debugger is controlled as follows.
This is a command. It prompts (with completion) for the name of a function. ...