emacs运行过程中有时候会报错,这时我们需要对其进行debug(调试)。
打开调试开关
执行M-x toggle-debug-on-error打开debug开关,这样当emacs出错的时候会进入debug模式。
调试
例如,我们有以下程序,这里xyz是个未定义的函数:
(defun aborn/debug-demo ()
"debug demo function"
(interactive)
(let ((a "a")
(b "value b")
(c 1))
(debug)
(message "middle")
(setq c (+ 1 c))
(xyz "a")
(message "ggg")
))
常用命令
当处于debug模式时,最常用的调试命令如下:
c 退出当前debug中断,继续执行直到遇到下一个error或debug点时才再次进入debug模式;
d 单步执行,会进入函数内部;
e 求值,结果将会显示在minibuffer里;
R 与上面的e命令一样,不过它会将求值结果保存在*Debugger-record*这个buffer里;
q 退出debug,程序交由最上层的emacs接管。
调试过程
-
在(debug)这句处,进入debug模式
这时,我们执行命令e,对c这个变量进行求值,结果是1求值 -
这时我们执行d表示一步步往下走,就走到(message "middle")这句里
一步步往下走
-
继续按d往下走
这时,执行(setq c (+ 1 c))函数求值�新值 -
然后我们按c命令,到下一个debug点,发现报void-function的错误:
(void-function xyz)
下一个debug点
- 最后,按q命令,退出debug。