17.3 debug-on-quit(debug)

除了设置debug-on-error或调用debug-on-entry之外,还有两种启动debug的方法。

通过将变量debug-on-quit设置为t,你可以在键入C-gkeyboard-quit)时随时启动debug。这对于调试无限循环非常有用。

或者,你可以在代码中插入一行,如下所示,以在想要启动调试器的地方开始(debug)

(defun triangle-bugged (number)
  "返回从1累加到NUMBER的数字的总和。"
  (let ((total 0))
    (while (> number 0)
      (setq total (+ total number))
      (debug)                         ; 启动调试器。
      (setq number (1- number)))      ; 错误出现在这里。
    total))

debug函数的详细信息在Lisp 调试器 in GNU Emacs Lisp参考手册中有描述。