2009-08-29 126 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)調試器將在該點進入