通常最简单的调试方法是使用 printf
。我可以做些什么来调试 emacs-lisp?如何从 elisp 向 emacs 编辑器打印内容?或者有什么方法可以调试 elisp 代码?
例如,如何检查以下代码是否在 .emacs
文件中运行?
(load "auctex.el" nil t t)
调试器 (edebug) 使用起来非常简单。转到函数的定义,然后键入 Mx edebug-defun。下次调用它时,您将能够像使用其他所有调试器一样单步执行代码。键入 ? 以获取键绑定列表,或查看 edebug 的文档。
GNU Emacs 中有两个调试器:
edebug - 在这里的另一篇文章中解释
调试
我使用 debug
。这些是常见的入口点(使用方法):
Mx debug-on-entry 后跟要使用调试器输入的函数。
Mx toggle-debug-on-error -- 出现错误时进入调试器。
Mx toggle-debug-on-quit -- 当用户点击 Cg 时进入调试器。
在代码中的特定位置(断点)对函数调试进行显式调用,以在这些位置输入调试器:
(debug)
使用 d 或 c 单步调试调试器以跳过特定评估的详细信息。
RET
,或按 e
并评估您感兴趣的变量。
debug
,以便在打开调试器时向您显示值。例如,(debug nil (current-buffer))
。
c
所做的。我称之为“跳过细节”。 c
大概代表“继续”。它完全评估给定的步骤,而不需要您逐步完成每个中间步骤来完成它。
这对于打印值很有用
(message "Hello (%s)" foo)
但不适用于数据结构。为此,使用
(prin1 list-foo)
或 (prin1-to-string) 将其嵌入到 (message) 中。
最简单的调试方法可能是以交互方式运行您的代码。您可以在 lisp 缓冲区中执行此操作,方法是将您的点放在表达式之后并运行 Cx Ce (eval-last-sexp
)。
或者:
(message "hello world")
Ch f message 以了解有关内置消息功能的更多信息。如果您生成大量消息,您可能希望将变量 message-log-max
自定义为更大的值。
printf
方法,有时它是一种非常好的方法。
一一回答您的问题:
打印一些东西:有一百万种方法。 (message "Hello") 将字符串放入回显区域; (insert "hello") 将字符串放入当前缓冲区的点...
我如何检查以下代码是否运行:我只需将“auctex.el”替换为(比如说)“frotzumotzulous”(即,任何字符串,只要它没有命名真实文件)然后看看你是否收到错误消息。如果您没有收到错误,那么显然该代码没有运行。
不定期副业成功案例分享
SPC
进行下一步,i
进入,o
退出,q
退出。