通常,最简单的调试方法是使用printf
。我该怎么做来调试emacs-lisp?如何从elisp打印emacs编辑器?或有没有办法调试elisp代码?
例如,如何检查以下代码是否在.emacs
文件中运行?
(load "auctex.el" nil t t)
答案 0 :(得分:66)
调试器(edebug)非常简单易用。转到函数的定义,然后键入 M-x edebug-defun 。下次调用它时,您将能够像其他调试器一样逐步执行代码。键入?以获取键绑定列表,或查看edebug的文档。
答案 1 :(得分:29)
GNU Emacs中有两个调试器:
我使用debug
。这些是常见的切入点(使用方法):
M-x debug-on-entry
后跟您要使用调试器输入的函数。
M-x toggle-debug-on-error
-
当出现错误时输入调试器。
M-x toggle-debug-on-quit
-
当用户点击 C-g 。debug
进行显式调用,以便在这些位置输入调试器:(debug)
使用 d 或 c 逐步调试调试器以跳过特定评估的详细信息。
答案 2 :(得分:14)
这对于打印值非常有用
(message "Hello (%s)" foo)
但对数据结构效果不佳。为此,请使用
(prin1 list-foo)
或(prin1-to-string)将其嵌入(消息)。
答案 3 :(得分:7)
最简单的调试方法可能是以交互方式运行代码。您可以在表达式之后放置您的点并运行 C-x C-e (eval-last-sexp
),从而在lisp缓冲区中执行此操作。
可替换地:
(message "hello world")
C-h f message 以了解有关内置消息功能的更多信息。如果生成大量消息,则可能需要将变量message-log-max
自定义为更大的值。
答案 4 :(得分:3)
逐一回答您的问题: