40.4 线程列表

list-threads 命令用于列出当前所有活动线程。 在生成的缓冲区中,每个线程会通过传给 make-thread 的名称标识(see 基础线程函数), 若创建时未指定名称,则使用其唯一内部标识符。缓冲区会显示每个线程在创建或最后刷新时的状态, 以及线程当时阻塞等待的对象(若处于阻塞状态)。

Variable: thread-list-refresh-seconds

*Threads* 缓冲区默认每秒自动刷新两次。你可以通过自定义该变量 调快或调慢刷新频率。

以下为线程列表缓冲区中可用的命令:

b

显示光标所在位置线程的调用栈回溯。该回溯会展示按下 b 时, 线程在代码中让出执行权或阻塞的位置。注意该回溯仅为快照; 此时线程可能已恢复执行并处于不同状态,甚至已经退出。

回溯缓冲区不会自动更新,你可在其中按 g 获取最新的回溯信息。 有关回溯及其他相关命令的说明,参见 See 调用栈

s

向光标所在线程发送信号。按下 s 后,按 q 发送退出信号, 或按 e 发送错误信号。线程可自行实现信号处理逻辑, 但默认行为是收到任意信号后退出。因此仅当你知晓如何重启目标线程时才可使用该命令, 否则必要线程被终止后,Emacs 会话可能出现异常行为。

g

刷新线程列表及其状态信息。