19.2.4 跳转

本节介绍的命令会一直执行,直到到达指定位置才暂停。 除 i 外,这些命令都会先创建一个临时断点,确定暂停位置,然后切换到运行模式。 在到达目标暂停点之前遇到的任何其他断点,同样会使程序暂停。 关于断点的详细说明,见 See Edebug 断点

如果发生非本地退出,这些命令可能无法按预期工作,因为非本地退出会跳过你期望程序暂停的临时断点。

h

执行到光标附近的暂停点(edebug-goto-here)。

f

执行一个表达式后暂停(edebug-forward-sexp)。

o

执行到当前所在表达式的末尾(edebug-step-out)。

i

单步进入光标所在列表表达式调用的函数或宏(edebug-step-in)。

h 命令通过临时断点,执行到光标当前位置或之后的暂停点。

f 命令让程序向前执行一个表达式。 更精确地说,它在 forward-sexp 会到达的位置设置一个临时断点,然后以运行模式执行,使程序在断点处暂停。

如果使用前缀参数 n,临时断点会被设置在光标之后第 n 个表达式处。 如果当前所在列表在到达 n 个元素前就结束,则暂停位置为当前所在表达式之后。

你必须确认 forward-sexp 找到的位置是程序真正会执行到的位置。 例如在 cond 表达式中,情况可能并非如此。

为了更灵活,f 命令从光标位置而非当前暂停点开始执行 forward-sexp。 如果你希望 从当前暂停点 执行一个表达式,先输入 wedebug-where)将光标移到暂停点,再输入 f

o 命令会执行出当前表达式。它在包含光标的表达式末尾设置临时断点。 如果当前所在表达式本身是函数定义,o 会执行到定义中最后一个表达式之前。 如果当前位置就在那里,它会从函数返回后暂停。 换句话说,除非你位于最后一个表达式之后,否则该命令不会退出当前正在执行的函数。

通常,hfo 命令会显示“Break”,并在显示刚求值的表达式结果前暂停 edebug-sit-for-seconds 秒。 将 edebug-sit-on-break 设置为 nil 可以取消该暂停。See Edebug 选项

i 命令单步进入光标所在列表表达式调用的函数或宏,并在其第一个暂停点暂停。 注意,该表达式不一定是即将被求值的表达式。 但如果该表达式是即将被求值的函数调用,记得在参数被求值前使用该命令,否则就来不及了。

i 命令会对即将进入的函数或宏进行插桩(如果尚未插桩)。 这很方便,但要注意:除非你显式移除插桩,否则该函数或宏会一直保持插桩状态。

emacs

Emacs

org-mode

Orgmode

Donations

打赏

Copyright

© 2025 Jasper Hsu

Creative Commons

Creative Commons

Attribute

Attribute

Noncommercial

Noncommercial

Share Alike

Share Alike