elisp `trace-function` не производит трассировку

Я пытаюсь отследить функцию в emacs lisp. Я пытаюсь использовать trace-function и друзья, но никаких следов не производится. *trace-output* создается буфер, но в нем ничего не написано.

Вот минимальный пример проблемы:

(progn
  (require 'trace)
  (untrace-all)
  (defun f () 'hello)
  ;(trace-function 'f)
  ;(trace-function-background 'f)
  (trace-function-foreground 'f)
  (f))

Выполнение этого изнутри *scratch* возвращается 'hello, но не информация трассировки записывается либо *trace-output* или же *scratch*, Я пробовал это с каждой из трех функций трассировки выше, но безуспешно.

Я делаю что-то неправильно? Как я могу получить информацию о трассировке?

1 ответ

Решение

Пакет trace.el определяет глобальную переменную inhibit-trace, который изначально ноль. Тем не менее, ввод набора отладчика inhibit-trace в 't, который остается в силе до тех пор, пока отладчик не выйдет явно. Просто закрываем *Backtrace* буфер не выходит из отладчика.

Моя проблема заключалась в том, что я вошел в отладчик раньше в моем сеансе и не вышел из него явно.

Такое поведение заслуживает того, чтобы быть более известным:)

Другие вопросы по тегам