How to debug elisp?
通常,最简单的调试方法是使用
例如,如何检查
1 | (load"auctex.el" nil t t) |
调试器(edebug)非常简单易用。转到函数的定义,然后键入M-x edebug-defun。下次调用它时,您将可以像其他调试器一样逐步执行代码。键入?作为键绑定列表,或查看edebug文档。
GNU Emacs中有两个调试器:
- edebug-在另一篇文章中解释
- 调试
我使用
-
M-x debug-on-entry ,后跟要使用调试器输入的功能。 -
M-x toggle-debug-on-error -
出现错误时进入调试器。 -
M-x toggle-debug-on-quit -
当用户点击C-g时,请输入调试器。 -
在代码中的特定位置(断点)放置对函数
debug 的显式调用,以在这些位置进入调试器:
1 | (debug) |
您可以使用d或c逐步调试程序,以跳过特定评估的详细信息。
这对于打印值很有用
1 | (message"Hello (%s)" foo) |
但不适用于数据结构。为此,使用
1 | (prin1 list-foo) |
或(prin1到字符串)嵌入到(消息)中。
调试的最简单方法可能是交互式运行代码。您可以在lisp缓冲区中做到这一点,方法是将点放在表达式后面并运行C-x C-e(
或者:
1 | (message"hello world") |
C-h f message可以找到有关内置消息功能的更多信息。如果生成大量消息,则可能需要将变量
要一一回答您的问题:
- 打印一些东西:有上百万种方法。 (消息" Hello")将字符串放入回显区域; (插入" hello")将字符串放入点...
- 我如何检查是否运行以下代码:我只是将" auctex.el"替换为(例如)" frotzumotzulous"(即,任何字符串,只要它没有命名真实文件),然后查看是否收到错误消息。如果没有错误,则很明显代码没有在运行。