emacs调试器:我如何逐步退出?

时间:2010-04-04 18:40:55

标签: debugging emacs elisp

我不知道为什么我在唠叨the documentation for the elisp debugger时遇到这么多麻烦。

我看到它有一个“步入”(d)的命令。但对于我的生活,我看不出步出或步伐。

有人可以帮忙吗?

如果我在 Backtrace 缓冲区中有这个:

Debugger entered--returning value: 5047
  line-beginning-position()
* c-parse-state()
* byte-code("...")
* c-guess-basic-syntax()
  c-show-syntactic-information(nil)
  call-interactively(c-show-syntactic-information)

...我在哪里放光标,键入什么键,退出parse-state()fn?我的意思是,运行直到fn返回,然后再次在调试器中停止。

3 个答案:

答案 0 :(得分:4)

调试时,按,我看到了:

o               edebug-step-out
f               edebug-forward-sexp
h               edebug-goto-here

我相信 o (它是step-out)和 f (就像跳过一样)是你正在寻找的,虽然我也找到 h 非常有用。

答案 1 :(得分:2)

'c'和'j'的工作方式类似于步出和步进。当遇到标记的帧(由“*”表示)时(文档说“退出”但这似乎不是调试器的行为),将重新输入调试器。当顶部框架被标记时,它们像步进一样工作;如果不是,他们的工作就像走出去一样。

在您的示例回溯中,输入任意一个将从line-beginning-position跳出c-parse-state。帧标志应该清除,因此第二次键入应该从c-parse-state开始。

答案 2 :(得分:1)

嗯。就我而言,我更喜欢debugedebug,而是每个人都喜欢......

关于debug,我使用dceq

如果您确实使用debug,请记住一件事,即节省时间和精力,当您看到一个宏调用(以#开头)时,您可以点击{{ 1}}扩展宏 - 在挖掘宏扩展代码时通常没有任何意义(除非您编写宏并且您正在尝试调试它)。

特别是对于c,要使用dolist跳过两级宏展开:一个用于c,另一个用于dolist

HTH。