エラーがEmacs Lispのコードに合図し、されている場合debug-on-error
でt
、私はエラーが発生した場所、それが簡単に把握することができますバックトレースバッファを取得します。ただし、ネットワークからの応答を非同期で処理しているときに発生するエラーの場合、バックトレースバッファーをポップアップ表示するのは面倒なので、エラーをキャッチしcondition-case
てログに記録します。
だから、でエラーを処理しているときに、エラーcondition-case
のポイントでバックトレースにアクセスする方法はありますか?backtrace
関数を呼び出すと、ハンドラー内のコードのバックトレースが取得されますが、これは私が探しているものではありません。
(condition-case e
(do-something-that-might-fail)
(error
(message "%s"
;; This gets the wrong backtrace!
(with-temp-buffer
(let ((standard-output (current-buffer)))
(backtrace)
(buffer-string))))))
これは、同様の方法でスタックを管理する言語の一般的な問題です。それを処理する方法は、既にスタック情報がアタッチされているエラーを通知することです。つまり、あなたの場合、
—
wvxvw
do-something-that-might-fail
スタックトレースを生成し、それが発生するエラーに添付します。
debbugs.gnu.org/cgi/bugreport.cgi?bug=24617#8には提案があります(自分で試していない)
—
npostavs
magithub-error
機能は私が思うにこれに似た何かをしますが、私は今コンピュータにいません。それは関係なく役立つかもしれません。