是否有调试模式可以检查 Emacs 中变量值的位置(哪个文件中的哪一行)发生了更改?
我很确定你运气不好。 然而,并非一切都已丢失。
define-symbol-macro
,
但 Emacs Lisp 没有。
你需要评估
(defun my-func-name ()
my-var-name)
和
(defsetf my-func-name (val)
(warn "my-var-name=%s" val) ; or `error'
(setq my-var-name val))
然后你必须在搜索框中搜索并替换
my-var-name
为 (my-func-name)
源,还将 (setq my-var-name ...)
替换为 (setf
(my-func-name) ...)
并重新编译并重新加载源。
将
let
替换为 symbol-macrolet
。
在 Emacs 26.1 中执行
M-x debug-watch <variable> RET
https://emacs.stackexchange.com/questions/27962/tracking-down-a-write-to-a-variable
https://www.gnu.org/software/emacs/manual/html_node/elisp/Variable-Debugging.html
命令:调试变量更改变量¶
此函数安排调试器在任何时候被调用 变量被修改。
It is implemented using the watchpoint mechanism, so it inherits the same characteristics and limitations: all aliases of variable will
一起观看,只能观看动态变量,并且 不会检测到对变量引用的对象的更改。为了 详细信息,请参阅变量更改时运行函数..