elisp `trace-function` 不产生跟踪

elisp `trace-function` not producing trace

我正在尝试跟踪 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* returns 'hello 中执行此操作,但不会将跟踪信息写入 *trace-output**scratch*。 以上三个跟踪函数我都试过了,都没有成功。

我做错了什么吗? 如何获取要生成的跟踪信息?

包trace.el定义了全局变量inhibit-trace,初始为nil。 但是,进入调试器将 inhibit-trace 设置为 't, 在显式退出调试器之前,它一直有效。 简单地关闭 *Backtrace* 缓冲区不会退出调试器。

我的问题是我在我的会话中早些时候进入了调试器并且没有明确退出它。

这种行为值得更多人了解:)