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*
буфер не выходит из отладчика.
Моя проблема заключалась в том, что я вошел в отладчик раньше в моем сеансе и не вышел из него явно.
Такое поведение заслуживает того, чтобы быть более известным:)