![我如何调试/监控 Emacs 以找出它为什么使用这么多内存?](https://linux22.com/image/956137/%E6%88%91%E5%A6%82%E4%BD%95%E8%B0%83%E8%AF%95%2F%E7%9B%91%E6%8E%A7%20Emacs%20%E4%BB%A5%E6%89%BE%E5%87%BA%E5%AE%83%E4%B8%BA%E4%BB%80%E4%B9%88%E4%BD%BF%E7%94%A8%E8%BF%99%E4%B9%88%E5%A4%9A%E5%86%85%E5%AD%98%EF%BC%9F.png)
我正在使用 GNU Emacs 23.1.50.1(x86_64-pc-linux-gnu,GTK+ 版本 2.18.0)并在 GNU 屏幕内启动我的 Emacs 会话。
自从我升级到 Ubuntu 10.04 及其版本后,emacs-snapshot
我遇到了一些问题。有时 Emacs 会占用所有 RAM 以及相同数量的交换空间(2+2GB),还会占用所有 CPU 时间。当我向进程发送 SIGTERM 时,进程会停止占用 CPU 时间,但分配的大量内存仍然存在。Emacs 本身不接受任何键序列。因此,通常我向进程发送 SIGKILL,它就会死机。
现在我想找出错误(如果有的话)的位置并进行一些调试。我看不出这种行为有什么特殊的原因。有时它在 Emacs 刚刚启动后就开始了,有时我可以一整天工作而没有问题,有时它发生在两者之间。所以我正在寻找一种调试或监控过程的方法。
我试过了strace
,但这会产生太多输出。编辑会话的 Strace 输出很容易填满我的整个硬盘。在 gdb 中运行 Emacs 也行不通,因为如果我没记错的话,Ubuntu 构建软件时没有调试符号。那么你对我如何找到(可能的)错误有什么建议吗?你会建议什么?
答案1
也许是包裹emacs-快照-dbg可能会感兴趣?
“此软件包包含对调试 Emacs 有用的调试符号。”
答案2
我偶然发现了这个问题的答案。问题不是 emacs,而是 GNOME 密钥环出现故障。当我启动没有密钥环守护进程的 Emacs 时,一切都正常。因此禁用它解决了我的问题。
答案3
目前,我正在尝试将消息缓冲区的所有内容保存到一个文件中,并希望找到一些有用的内容:
(with-current-buffer "*Messages*" (auto-save-mode t))