我在Emacs中打开了错误调试,这使得 backtrace 缓冲区在我操作错误时弹出 . 这很烦人,我只是想知道是否有办法在迷你缓冲区中显示调试错误消息?如果我真的想看看错误细节,我可以自己切换到 backtrace 缓冲区 .
我觉得你错过了一个关键方面 . debug-on-error 不仅仅生成堆栈跟踪的文本作为某种log1;它会让你进入一个交互式调试器,这或多或少需要一些用户交互 .
debug-on-error
我说"more or less"因为在这种情况下Emacs没有停止 - 你可以在调试器打开时继续做 - 但是你也会注意到调试器打开时忽略了 debug-on-error ,所以如果你不这样做t与打开的调试器交互,后续错误不会生成新的调试会话 .
不言而喻,您不希望默认情况下启用此选项 . debug-on-error 是您在需要时启用的功能,但是请保持禁用状态 .
我怀疑这里真正的问题是:你想要调试什么?因为如果你发现这个选项很烦人,它可能不是最好的选择 . 或者您可以以更有针对性的方式使用它 .
首先(坚持使用 debug-on-error 变量),您可以将其限制为特定的错误条件列表,和/或您可以配置 debug-ignored-errors 以排除您不希望调试的错误 .
debug-ignored-errors
其次,还有许多其他方法可以使用标准调试器,这可能是更好的解决方案 . 例如 . :
;; 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 . )
edebug
当然,您也应该查看手册:C-hig (elisp) Debugging RET
(elisp) Debugging
1如果您想要一个选项,只需将堆栈跟踪记录到缓冲区然后继续,您可以通过 M-x report-emacs-bug 将其作为功能请求提升 .
M-x report-emacs-bug
一种解决方案是关闭 debug-on-error !然后,当您收到要查看回溯的错误消息时再次打开它 - 并再次引发错误 .
当然,这仅对您知道如何重现的错误有用 .
(P.S . 你的意思是回声区域,而不是迷你缓冲区 . )
2 回答
我觉得你错过了一个关键方面 .
debug-on-error
不仅仅生成堆栈跟踪的文本作为某种log1;它会让你进入一个交互式调试器,这或多或少需要一些用户交互 .我说"more or less"因为在这种情况下Emacs没有停止 - 你可以在调试器打开时继续做 - 但是你也会注意到调试器打开时忽略了
debug-on-error
,所以如果你不这样做t与打开的调试器交互,后续错误不会生成新的调试会话 .不言而喻,您不希望默认情况下启用此选项 .
debug-on-error
是您在需要时启用的功能,但是请保持禁用状态 .我怀疑这里真正的问题是:你想要调试什么?因为如果你发现这个选项很烦人,它可能不是最好的选择 . 或者您可以以更有针对性的方式使用它 .
首先(坚持使用
debug-on-error
变量),您可以将其限制为特定的错误条件列表,和/或您可以配置debug-ignored-errors
以排除您不希望调试的错误 .其次,还有许多其他方法可以使用标准调试器,这可能是更好的解决方案 . 例如 . :
(还有
edebug
. )当然,您也应该查看手册:
C-hig
(elisp) Debugging
RET1如果您想要一个选项,只需将堆栈跟踪记录到缓冲区然后继续,您可以通过
M-x report-emacs-bug
将其作为功能请求提升 .一种解决方案是关闭
debug-on-error
!然后,当您收到要查看回溯的错误消息时再次打开它 - 并再次引发错误 .当然,这仅对您知道如何重现的错误有用 .
(P.S . 你的意思是回声区域,而不是迷你缓冲区 . )