调试器模式派生自调用栈模式(Backtrace mode), 该模式也被 Edebug 和 ERT 用于显示调用栈。see Edebug,the ERT manual in ERT: Emacs Lisp Regression Testing。
调用栈缓冲区展示正在执行的函数及其参数值。 创建时,每个栈帧占一行(可能很长)。 (栈帧是 Lisp 解释器记录某一次函数调用信息的位置。) 最近调用的函数位于最上方。
在调用栈中,你可以将光标移到某行以指定对应栈帧。 光标所在行的栈帧称为当前栈帧(current frame)。
如果函数名带有下划线,表示 Emacs 知道其源码位置。
你可以用鼠标点击该名称,或将光标移到该处按 RET 访问源码。
即使名称没有下划线,你也可以按 RET,
若存在帮助信息,则会在帮助缓冲区中显示该符号的说明。
绑定到 M-. 的 xref-find-definitions 命令
也可用于调用栈中的任意标识符。see Looking Up Identifiers in The GNU Emacs Manual。
在调用栈中,长列表、长字符串、长向量、长结构体的尾部,
以及深度嵌套的对象会显示为带下划线的 “...”。
你可以用鼠标点击 “...”,或将光标移到该处按 RET 以显示被隐藏的部分。
可通过自定义 backtrace-line-length 控制缩写程度。
以下是用于导航和查看调用栈的命令列表:
切换显示当前栈帧的局部变量。
跳转到当前栈帧开头,或上一栈帧开头。
跳转到下一栈帧开头。
为光标处的顶层 Lisp 表达式添加换行与缩进,提高可读性。
将光标处的顶层 Lisp 表达式折叠为单行。
切换光标所在栈帧的 print-circle。
切换光标所在栈帧的 print-gensym。
展开光标所在栈帧中所有被缩写为 “...” 的表达式。