19.2.6.1 Edebug 断点

在使用 Edebug 时,你可以在测试程序中指定 断点(breakpoints):即执行时应当暂停的位置。 你可以在任意暂停点设置断点,暂停点的定义见 使用 Edebug。 设置与取消断点时,受影响的暂停点是源码缓冲区中光标所在位置或之后的第一个暂停点。 以下是 Edebug 中用于断点操作的命令:

b

在光标所在位置或之后的暂停点设置断点(edebug-set-breakpoint)。 若使用前缀参数,则为临时断点 — 第一次使程序暂停后便自动失效。 断点处会显示带有 edebug-enabled-breakpointedebug-disabled-breakpoint 外观的覆盖层。

u

取消光标所在位置或之后的暂停点的断点(如果有)(edebug-unset-breakpoint)。

U

取消当前表达式中的所有断点(edebug-unset-breakpoints)。

D

切换光标附近断点的启用/禁用状态(edebug-toggle-disable-breakpoint)。 该命令主要用于条件断点,避免重新设置条件的麻烦。

x condition RET

设置条件断点,仅当 condition 表达式求值结果为非nil 时才暂停程序(edebug-set-conditional-breakpoint)。 使用前缀参数则为临时断点。

B

将光标移动到当前定义中的下一个断点(edebug-next-breakpoint)。

在 Edebug 中,你可以用 b 设置断点,用 u 取消断点。 先将光标移到目标 Edebug 暂停点,再按 bu 即可在该处设置或取消断点。 在未设置断点的位置执行取消操作无效果。

重新求值或重新插桩一个定义会清除该定义上之前的所有断点。

条件断点(conditional breakpoint) 会在程序每次到达时检测一个条件。 条件求值过程中发生的任何错误都会被忽略,视为结果为 nil。 设置条件断点请使用 x,并在迷你缓冲区中指定条件表达式。 如果在已存在条件断点的暂停点再次设置,迷你缓冲区会显示之前的表达式供你编辑。

使用带前缀参数的设置命令,可以将条件断点或无条件断点设为 临时断点(temporary)。 当临时断点触发暂停后,会自动被取消。

除了在“无间断运行”模式下,Edebug 总会在断点处停止或暂停。 在该模式下,断点会被完全忽略。

使用 B 命令可以查看断点位置:它会将光标移到同一函数内光标之后的下一个断点; 如果后面没有断点,则回到第一个断点。该命令不会继续执行,仅在缓冲区中移动光标。

emacs

Emacs

org-mode

Orgmode

Donations

打赏

Copyright

© 2025 Jasper Hsu

Creative Commons

Creative Commons

Attribute

Attribute

Noncommercial

Noncommercial

Share Alike

Share Alike