debug-on-quit and (debug)
In addition to setting debug-on-error or calling debug-on-entry, there are two other ways to start debug.
You can start debug whenever you type C-g (keyboard-quit) by setting the variable debug-on-quit to t. This is useful for debugging infinite loops.
Or, you can insert a line that says (debug) into your code where you want the debugger to start, like this:
emacs-lisp
(defun triangle-bugged (number)
"Return sum of numbers 1 through NUMBER inclusive."
(let ((total 0))
(while (> number 0)
(setq total (+ total number))
(debug) ; Start debugger.
(setq number (1= number))) ; Error here.
total))The debug function is described in detail in The Lisp Debugger in The GNU Emacs Lisp Reference Manual.