Як налагоджувати помилки у вартових та під час блокування шрифту


10

Якщо виникає помилка всередині дозорного процесу або під час блокування шрифту, Emacs не показує зворотній слід, навіть якщо це debug-on-errorбуло раніше ввімкнено.

Я розумію, чому ці помилки виявляються, та сама помилка може бути спровокована ще раз, намагаючись представити зворотній слід. Однак коли я хочу налагодити цю помилку, це не дуже корисно. Я б швидше ризикну Emacs не відповісти, ніж працювати з цим:

error in process sentinel: Wrong type argument: stringp, nil

Зрештою, я можу просто запустити другу інстанцію, якщо перша почне божевільна. Трохи більше контексту допоможе, коли існує багато місць, де теоретично може статися така помилка у дозорному.

Тож як я можу змусити Emacs показати зворотній шлях навіть у випадках, коли debug-on-errorце не має ефекту?


1
Я бачив emacs.stackexchange.com/questions/3552/…, але думаю, що щодо цього має бути питання взагалі, а не лише про один конкретний випадок. Крім того, я дуже сподіваюся, що "використовувати printf" - це не єдина відповідь, тому що це я використовував у минулому, і це не задовольняє, особливо якщо помилка "Недійсна посилання на обличчя: деяка особа-яка-я-абсолютно-знаю -існує ", що може бути спричинене майже всім встановленим пакетом.
Тарсій

URL-адреса вказує на це запитання і тому досить заплутана у вашому коментарі, чи це навмисне чи помилка від вашого імені?
wasamasa

Це питання, яке я мав на увазі: ttp: //emacs.stackexchange.com/questions/1045/how-to-debug-startup-problem-if-debug-init-has-no-effect
tarsius

посилання tarsius призначено: emacs.stackexchange.com/questions/1045/… ‌ ug-init-has-no-effect
dcorking

Відповіді:


10

Що стосується дозорних процесів, я не думаю, що це є вагомі причини. IOW Я думаю, що це просто відсутня функція, тому я пропоную вам M-x report-emacs-bug.

Що стосується блокування шрифту, проблема є більш хитрою, тому що насправді трапляється, що помилка спрацьовує під час jit-lock, тобто під час повторного відтворення, і ми не можемо легко ввійти до налагоджувача в той момент (IIRC в якийсь момент Герд намагався зробити це працює, але все ж були деякі серйозні проблеми). Тож ви можете налагодити його одним із наступних способів:

  • M-x jit-lock-debug-mode яка змінює jit-lock для запуску відразу після повторного відображення, щоб ми могли увійти до налагоджувача.
  • M-: (setq font-lock-support-mode nil) RETа потім відключити + повторне блокування шрифту. Таким чином, шрифт-блокування більше не використовує jit-lock, тому він працює під час команди користувача, а не під час наступного повторного відображення.

Насправді, debug-on-errorсхоже, добре працює над дозорними процесами.
Стефан

@tarsius - опублікуйте посилання на свою проблему з
дебюгами

Запит на особливості Тарсія - 19432, де він позначений як невідтворюваний. Стефан Моньє розмістив там вирішення, яке використовує, --evalа не використовує --debug-init . Крім того, його вирішення не допомагає мені впасти в .emacs.d
задній план

1
@dcorking: ні, у помилці № 19432 я не опублікував "обхід", але невдалу спробу відтворення його помилки. Чому б вам не надіслати рецепт, щоб відтворити свою проблему?
Стефан
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.