debug-on-error与debug-on-signal(特别是在json.el中)

时间:2015-02-04 08:50:30

标签: debugging emacs elisp

我期望debug-on-error能够捕获大多数异常事件,并告诉我出了什么问题。 但是,使用signal代替error的{​​{3}}并非如此。

json.el警告不要使用debug-on-signal和我的简短实验几乎证实了这一点 - 整个地方都有信号,所以我只能陷入{{1} } *发出信号以获得有用的信息。但我甚至无法解决这个问题。

我准备提交json-的错误报告,但我觉得我可能会遗漏一些东西。 json.el选择json.el优先于signal是否有充分的理由?

重新制作的步骤:

error

更实际的是,当您将输出从某些内容传递给(require 'json) (setq debug-on-error t debug-on-signal t) ; "json" ; '("json") ;; Still nothing (json-read-from-string "") (或其中一个便捷包装json-readjson-read-from-string,{时,您会遇到实际的现实问题{1}}等等,它不包含您的期望。

即使json-read-file设置为json-read-object,结果仍然是debug-on-signal缓冲区中的以下文字,而不是其他内容:

t

没有任何关于错误来源或任何事情的迹象。 (在有类似问题的实际代码中,我看到*Messages*只是稍微有点帮助。)

1 个答案:

答案 0 :(得分:0)

事实上,debug-ignore-errors的默认值包括end-of-file,因此您必须删除它才能调试此特定问题。

(delete 'end-of-file debug-ignored-errors)

或者更现实

(let (debug-ignored-errors)
   (json-something))

debug-ignored-errors来电期间暂时覆盖json-something的值。

......然后你根本不需要debug-on-signal

所以我推测使用signal代替error导致问题行为被证明是错误的。