Когда ошибка возникает в процесс-стороже или во время блокировки шрифта, Emacs не показывает обратный след, даже если он debug-on-error
был ранее включен.
Я понимаю, почему эти ошибки обнаруживаются, та же ошибка может быть вызвана снова при попытке представить обратную трассировку. Однако, когда я хочу отладить эту ошибку, это не очень полезно. Я бы предпочел рискнуть Emacs перестать отвечать на запросы, чем работать с этим:
error in process sentinel: Wrong type argument: stringp, nil
В конце концов, я могу просто запустить второй экземпляр, если первый начнет сходить с ума. Немного больше контекста помогло бы, когда есть много мест, где такая ошибка может теоретически возникнуть в часовом.
Итак, как я могу заставить Emacs показывать обратный след даже в тех случаях, когда debug-on-error
это не имеет никакого эффекта?
Ответы:
Для стражей процесса, я не думаю, что есть веская причина. Я думаю, что это просто отсутствующая функция, поэтому я предлагаю вам
M-x report-emacs-bug
.С блокировкой шрифтов проблема более сложная, потому что на самом деле происходит то, что ошибка вызывается во время jit-lock, то есть во время повторного отображения, и мы не можем легко войти в отладчик в этот момент (IIRC в какой-то момент пытался сделать Герд это работает, но были некоторые серьезные проблемы, все еще). Таким образом, вы можете отладить его одним из следующих способов:
M-x jit-lock-debug-mode
который изменяет jit-lock для запуска сразу после повторного отображения, чтобы мы могли войти в отладчик.M-: (setq font-lock-support-mode nil) RET
а затем отключить + включить блокировку шрифта. Таким образом, font-lock больше не использует jit-lock, поэтому он запускается во время команды пользователя, а не во время повторного отображения.источник
debug-on-error
кажется, работает нормально на процесс часовых.--eval
а не--debug-init
. Кроме того, его обходной путь не помогает мне.emacs.d