进行中断评估并在emacs-lisp调试器中观察当前堆栈?


17

如果某些emacs-lisp函数(例如主模式钩子)花费的时间比预期的要长,我有时想中断它并查看当前堆栈。理想情况下,我还希望能够在调试器中查看变量值,等等。我不是在谈论我故意在emacs-lisp模式下执行的代码,而是在emacs的正常操作中执行的代码。

如何直接在emacs中中断emacs-lisp代码的执行?我不知道我需要调试哪个功能。

例如,键入C-g,虽然它中断执行,但也告诉我什么功能被中断。

Answers:


18

您可以C-g通过打开来触发调试器debug-on-quit。做就是了

M-x toggle-debug-on-quit

现在,每次您点击时,C-g您都会回溯正在发生的事情。此回溯是交互式的,因此您可以继续使用逐步浏览该功能d,并可以开始使用c。(尝试一下,看起来比看起来容易)。

这与通过(debug)在代码内部添加而获得的回溯相同。这是一篇简短的博客文章 ,以及相关的Elisp手册页


(每周说hello);)令人敬畏的是,调试器是交互式的–我从没想过要检查一下:)
Sean Allred 2014年

@SeanAllred是的,我只是在几周前才发现。
马拉巴巴
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.