Я работаю над программным проектом для Emacs, в котором есть несколько тестов, которые можно запустить в пакетном режиме для быстрого регрессионного тестирования.Однако, когда тесты не пройдены, трассировки стека в терминале обрезаются вверху, поэтому мне нужно снова запустить тест на неудачу в интерактивном сеансе Emacs, чтобы просмотреть транс в полном стеке и выяснить, где на самом деле произошла ошибка.Есть ли какая-нибудь переменная, которую я могу изменить, чтобы увеличить максимальную длину трассировок стека, которые Emacs выводит на терминал в пакетном режиме?
Если вы хотите, чтобы простой тестовый пример генерировал действительно глубокую трассировку стека, которая получитотрежьте, вот тривиальный случай бесконечной рекурсии, который emacs прервет, когда достигнет определенной глубины:
emacs -Q -batch --eval '(defun f () (f))' -f toggle-debug-on-error -f f
Вот вывод точного этой команды в моей системе:
Debug on Error enabled globally
...
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
f()
command-line-1(("--eval" "(defun f () (f))" "-f" "toggle-debug-on-error" "-f" "f"))
command-line()
normal-top-level()
В частности, обратите внимание, что строка после Debug on Error enabled globally
на самом деле является многоточием на выходе, нет способа углубиться в трассировку стека без интерактивного запуска.