Emacs-如何查看/如何调试单个elisp函数/Emacs命令
有一件事我不喜欢emacs在组织模式下的表函数。我希望看到我作为Emacs命令运行的函数执行的所有函数Emacs-如何查看/如何调试单个elisp函数/Emacs命令,emacs,elisp,Emacs,Elisp,有一件事我不喜欢emacs在组织模式下的表函数。我希望看到我作为Emacs命令运行的函数执行的所有函数 最好的方法是什么?关于如何开始调试elisp代码,特别是感兴趣的单个命令的任何提示?C-h f要进入函数帮助模式,请键入函数名称。如果它是一个elisp函数,那么您可以查看源代码并查找它调用的函数 C-hf函数名,用于查找函数的源代码 C-uC-M-x为Edebug的功能插入仪器 无论何时调用函数,Emacs都会陷入Edebug,这使得逐步执行函数、检查变量和执行其他典型调试任务变得容易。有关
最好的方法是什么?关于如何开始调试elisp代码,特别是感兴趣的单个命令的任何提示?
C-h f
要进入函数帮助模式,请键入函数名称。如果它是一个elisp函数,那么您可以查看源代码并查找它调用的函数
无论何时调用函数,Emacs都会陷入Edebug,这使得逐步执行函数、检查变量和执行其他典型调试任务变得容易。有关更多信息,请参见
(info“(Elisp)Edebug”)
。与Edebug相比,我更喜欢传统的Emacs调试器。要使用它:
M-x debug-on-entry the-function RET
然后,无论何时调用函数,都会输入调试器。使用d逐步完成评估,如果您想跳过某个步骤(而不是深入了解其细节),则使用c
它有助于在另一个窗口/框架中查看函数的定义
您可以使用
M-x cancel debug on entry
取消debug on entry
取消如果您希望通过编程方式查看函数源(类似于Clojure的source
宏),您可以使用符号函数
子例程
例如,在我的.emacs
文件中有一个defundomath
(符号函数“做数学运算”)
它给了我
ELISP> (symbol-function 'do-math)
(lambda
(expression)
(interactive "sexpression:")
(insert
(number-to-string
(eval
(read expression)))))
另见:
另见:
某些平台,如Gnome 3,不允许Emacs接收C-M-x
。因此,要使用edebug来检测该功能,请使用C-u M-x eval defun
。启用后如何禁用该功能?