如何调试使Emacs崩溃/使用100%CPU的Emacs lisp?

时间:2012-01-08 20:21:18

标签: emacs elisp

我正在使用的外部库经常固定我的CPU。我想帮助作者修复它(因为我非常喜欢库),但我不知道如何正确调试崩溃。

有关调试Emacs lisp的任何提示吗?当它崩溃时要记住Emacs不再工作了,我必须杀掉它(所以Emacs中的解决方案本身可能没什么用处。)

编辑:我应该澄清它是字节编译的,并且这个问题并不总是发生在其他人身上,所以它可能特定于我的架构/ init文件。这绝对与这个图书馆有关。

1 个答案:

答案 0 :(得分:6)

首先,总是调试Emacs-Lisp程序的未编译版本,除非你确信字节编译器引入了这个问题。

其次,如果代码挂起Emacs,那么代码可能处于无限循环中,禁止 - 退出绑定非零。因此,要做的第一件事就是浏览库的源代码并将所有禁止 - 退出引用更改为其他内容,以便C-g可以停止循环。之后,加载库,将debug-on-quit设置为t,当你按下C-g时,你应该得到一个很好的调试跟踪,它会显示代码循环的位置。从那里开始,调试问题应该像调试任何其他无限循环一样简单。

相关问题