仅在Emacs中的迷你缓冲区中显示错误消息

时间:2014-04-23 17:09:02

标签: emacs

我在Emacs中启用了错误调试,这使得 backtrace 缓冲区在我操作错误时弹出。这很烦人,我只是想知道是否有办法在迷你缓冲区中显示调试错误消息?如果我真的想看一下错误细节,我可以自己切换到 backtrace 缓冲区。

2 个答案:

答案 0 :(得分:1)

我觉得你错过了一个关键方面。 debug-on-error并不仅仅生成堆栈跟踪的文本作为某种log 1 ;它会让你进入一个交互式调试器,这或多或少需要一些用户交互。

我说"或多或少"因为在这种情况下Emacs没有停止 - 你可以在调试器打开时继续做 - 但是你也会注意到在调试器打开时忽略了debug-on-error,所以如果你没有与开放调试器交互,后续错误不会产生新的调试会话。

毫无疑问,您不希望默认情况下启用此选项。 debug-on-error是您在需要时启用的功能,但在其他情况下则禁用。

我怀疑这里真正的问题是:你想要调试什么?因为如果你发现这个选项很烦人,那么它可能不是最好的选择。或者您可以以更有针对性的方式使用它。

首先(坚持使用debug-on-error变量),您可以将其限制为特定的错误条件列表,和/或您可以配置debug-ignored-errors以排除您不希望调试的错误。< / p>

其次,有许多其他方法可以使用标准调试器,这可能是更好的解决方案。 e.g:

;; M-x debug-on-entry FUNCTION
;; M-x cancel-debug-on-entry &optional FUNCTION
;; M-x toggle-debug-on-quit
;; setq debug-on-signal
;; setq debug-on-next-call
;; setq debug-on-event
;; setq debug-on-message REGEXP
;; (debug &rest DEBUGGER-ARGS)

(还有edebug。)

当然,您也应该查看手册:
C-h i g (elisp) Debugging RET

1 如果您想要一个 的选项,只需将堆栈跟踪记录到缓冲区然后继续,您可以通过{{将其作为功能请求引发1}}。

答案 1 :(得分:0)

一种解决方案是关闭debug-on-error!当您收到要查看回溯的错误消息时再将其打开 - 并再次引发错误。

当然,这仅适用于您知道如何重现的错误。

(P.S。你的意思是回音区域,而不是迷你缓冲区。)