2014-04-23 119 views
0

我打開Emacs中的錯誤調試功能,當我誤操作時,這會使緩衝區彈出到最前面。這很煩人,我只是想知道是否有方法在minibuffer中顯示調試錯誤消息?如果我真的想看看錯誤的詳細信息,我可以切換到回溯緩衝區我自己。僅在Emacs的迷你緩衝區中顯示錯誤消息

+0

請注意,如果您自己編寫Emacs包並希望在不啓動調試器的情況下發出純錯誤,則可以使用'user-error'。另外,如果您想單擊現有包的錯誤,您可以將錯誤符號或正則表達式的匹配錯誤消息添加到'debug-ignores-errors'。 – Lindydancer

回答

1

我覺得你缺少的一個重要方面。 debug-on-error不只是生成堆棧跟蹤的文本作爲某種日誌;它會讓你進入一個交互式調試器,並且或多或少需要一些用戶交互。

我說「或多或少」,因爲在這種情況下Emacs不會停下來 - 在調試器打開的時候,您可以繼續執行任務 - 但是您也會注意到debug-on-error在調試器是開放的,所以如果你不要與打開的調試器交互,後續的錯誤不會產生新的調試會話。

不用說您不希望默認啓用此選項。 debug-on-error是您在需要時啓用的功能,但在其他情況下請保持禁用。

我懷疑這裏真正的問題是:你想要調試什麼?因爲如果你發現這個選項很煩人,它可能不是最好的選擇。或者您可以更有針對性地使用它。

首先(堅持使用debug-on-error變量),您可以將其限制爲特定錯誤條件列表,並且/或者您可以配置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

你當然應該,檢查手冊,以及:
我克(elisp) DebuggingRET

如果您想要opti在所在的位置只需將堆棧跟蹤記錄到緩衝區,然後繼續,您可以通過M-x report-emacs-bug將其作爲功能請求提出。

0

一種解決方案是關閉debug-on-error!然後當您收到一條您想要查看回溯的錯誤消息時再次打開它 - 並再次引發錯誤。

當然,這隻適用於您知道如何重現的錯誤。

(附註:你的意思是回聲區,而不是迷你緩衝區。)

相關問題