簡體   English   中英

調試Emacs Lisp主要模式

[英]Debug Emacs Lisp major mode

我正在為Emacs開發一個主要模式。 例如,有什么方法可以在發生事件時在源代碼中設置斷點嗎?

找到您想要單步執行的函數的Lisp源,並在那里鍵入Mx edebug-defun 然后,無論何時執行該功能,您都將被自動放入Edebug,如果您願意,可以在其中單步執行。

但是,Fontification函數可能有點棘手,因為它們可以在奇數時間調用。 您可以使用message功能將消息寫入*Messages*緩沖區。 另一個技巧是關閉字體鎖定(這樣你的函數不會被自動調用),然后使用edebug-defun准備你正在調試的函數並手動調用它。 (注意,您可以使用M-:也稱為eval-expression )來調用非交互式函數。)

可在此處找到調試elisp的手冊。

您可以使用edebug提到的edebug ,還有Mx debug-on-entry ,你可以設置(setq debug-on-quit t) 查看鏈接中的所有選項,這一切都取決於你想要如何給貓皮膚。

就像在任何其他編程語言中一樣,您可以使用print語句進行調試。 (message "here, foo=%d" foo)是你的朋友。 (你可能知道這些消息是在*Messages*緩沖區中累積的,所以如果它們過得太快,那就不是問題了。) trace-function也很有幫助。

我編寫了很多emacs模式,很少需要調試器。 通常,問題會暴露出一些很好的印刷語句。

您可以使用debug而不是edebug 要在輸入函數時打開調試器,請使用Mx debug-on-entry THE-FUNCTION 或者在源代碼中插入對函數debug調用以作為斷點(重新評估代碼)。

然而,fontification實際上發生在奇數次,涉及重新顯示等。如果你真的需要調試fontification過程,那么你可以在font-lock-keywords使用函數,而不僅僅是regexps。

但實際上,您需要更加具體地了解字體鎖定調試問題。 通常,人們遇到的問題是:(a)理解font-lock-keywords (結構)和(b)與他們想要的不匹配的正則表達式。

無論如何,要回答關於*斷點的問題“:是的,只需在Lisp源代碼中的任何一點插入(debug) 。此時將輸入調試器。

另外請注意,如果您想快速調試一些lisp片段,您可能也想使用ielm模式,其工作方式類似於python交互模式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM