2009-08-29 78 views

回答

7

找到您想要逐步完成的函数的Lisp源,然后在那里输入M-x edebug-defun。然后,无论什么时候执行该功能,您都会自动放入Edebug中,如果您愿意,可以在其中逐步完成。

但是,分形函数可能有点棘手,因为它们可以在奇数时刻调用。您可以使用message函数将消息写入*Messages*缓冲区。另一个技巧是关闭字体锁(所以你的函数不会自动调用),然后准备你正在调试的函数edebug-defun并手动调用它。 (请注意,您可以使用M-:(又名eval-expression)调用非交互式功能。)

+0

是的,这适用于我的缩进。 - 区域函数,但是,正如你所警告的那样,不是为了形成函数!谢谢。 – Alex

4

用于调试elisp的手册可以是found here

如上所述,您可以使用edebug,还有M-x调试入门,您可以设置(setq debug-on-quit t)。查看链接中的所有选项,这一切都取决于你想如何皮肤的猫。

2

就像其他任何编程语言一样,您可以使用打印语句进行调试。 (message "here, foo=%d" foo)是你的朋友。 (您可能知道这些消息是在*Messages*缓冲区中累积的,所以如果它们过得太快,那不是问题。)trace-function也很有帮助。

我写了很多emacs模式,并且很少需要调试器。通常情况下,这个问题会暴露在一些恰当的打印语句中。

+0

原则上,调试器只是一个荣耀的'insert-print-statement'机器,但它可以自动执行任务,而不会破坏代码本身。我会发现这个功能对调试我正在编写的elisp函数很有用,特别是因为我对elisp相当陌生 – Alex

0

在另一个说明,以及如果你只是想快速调试一些lisp片段,你可能也想使用ielm模式,以及例如python交互模式。

1

而不是edebug您可以使用debug。要在输入函数时打开调试器,请使用M-x debug-on-entry THE-FUNCTION。或者在源代码中插入调用函数debug作为断点(重新评估代码)。

但是,分形实际发生在奇数时间,涉及重新显示等。如果您确实需要调试分形过程,那么您可以在font-lock-keywords中使用函数而不仅仅是正则表达式。

但是,您真的需要更具体地了解您的字体锁调试问题。通常人们遇到的问题是(a)理解font-lock-keywords(结构)和(b)不符合他们想要的正则表达式。

总之,要回答你的问题有关*断点“:是的,只要你在Lisp的源代码,想要的任何位置插入(debug)调试器将在该点进入