我正在使用Ubuntu 12.04和GNU Emacs 23.3.1。
我刚刚尝试了书签+库(http://www.emacswiki.org/emacs/BookmarkPlus)我从该网站下载了文件,例如来自http://www.emacswiki.org/emacs/download/bookmark%2b.el
的bookmarks+.el
我把文件放在~/emacs
目录中,然后放
(setq load-path
(append (list nil "~/emacs")
load-path))
(require 'bookmark+)
在我的~/.emacs
启动文件中。要调试我删除了~/.emacs
..
为了简单起见,我们现在按照以下步骤启动Emacs:
bash$ emacs ~/.emacs &
然后我使用 C-x p m 添加一个书签,然后输入 C-x r l 调出书签缓冲区,我得到了以下屏幕截图:
现在有几种方法可以让Emacs崩溃:
.emacs
缓冲区,然后再次按 C-x b .. 当它崩溃时,框架是灰色的,没有任何反应,而在Gnome终端,我收到错误信息
*** glibc detected *** emacs: realloc(): invalid next size: 0x000000000228e1a0 ***
答案 0 :(得分:2)
如果在尝试不同的Emacs构建后遇到同样的问题(顺序不太重要,并且项目不一定相关 - 即尝试其中一项或多项):
从您的sexp中删除更新nil
的{{1}}。并删除load-path
,除非它是一个目录。 ~/.emacs
应该是目录名列表。它应该包括Bookmark +文件所在的目录。通常,您load-path
会将目录添加到(add-to-list 'load-path "/some/directory")
。
对于您的测试,除非您已经这样做,否则请删除书签文件。 IOW从零开始,正如您尝试清空load-path
一样。从没有书签开始。
如果您在不加载书签+的情况下执行相同的操作(例如.emacs
后跟C-x r l
)会发生什么情况,即使用香草Emacs书签代码?
删除任何字节编译的Bookmark +文件,因此您使用C-x b
个文件,而不是*.el
。然后将*.elc
设置为debug-on-error
。 (但是如果Emacs崩溃那么你可能不会得到一个Lisp回溯。)
尝试t
(或您认为可能发生崩溃的其他任何功能),然后使用M-x debug-on-entry switch-to-buffer
逐步调试调试器(或跳过您不关心的部分,使用d
)。为了最清晰(详细),请加载Lisp源文件,该文件定义您传递给c
的函数。例如,如果它是debug-on-entry
,那么在最近的Emacs构建中,文件将是switch-to-buffer
。执行window.el
(或任何函数)以查看要加载的文件。使用C-h f switch-to-buffer
或load-file
(带有明确的load-library
后缀)而非.el
加载文件,以便加载require
。
每次Emacs崩溃都表明存在Emacs错误(Emacs永远不会崩溃)。如果崩溃在当前目录中创建了文件*.el
,则使用emacs_backtrace.txt
并将该文件包含在您的错误报告中。
如果调试这有助于缩小崩溃原因,请考虑使用M-x report-emacs-bug
报告缩小的配方以重现崩溃。