本页内容
会话录制与回放
几个小时才出一次的故障,最难交接。会话录制把每个连接收发的每个字节连同发生的时刻写进一个 .spulog 文件;会话回放在独立窗口里按原来的节奏重放它——可以在本机,也可以在办公室同事的电脑上,不需要设备,也不需要连接任何端口。
典型的用法:现场工程师开始录制后就让它一直录着,设备一出异常就按 F9 记下这一刻,然后继续干活。回到办公室,有人打开文件、跳到书签,把故障前后的过程按任意速度反复看。录制在 Free 里就能用,客户不必购买任何东西,也能把问题录下来发给你。
入口都在主窗口的文件菜单:
- 文件 → 录制会话… 开始录制;录制期间同一个菜单项变为停止录制;
- 文件 → 添加书签(F9)在当前连接上标记此刻;
- 文件 → 打开录制… 在回放窗口里打开
.spulog录制,或文件 → 导出会话…保存的 JSON Lines 文件; - 文件 → 回放本次会话 直接回放本次会话中 SPU 保留的数据,无需先保存。
回放只负责显示:回放的数据绝不会发往端口、不会触发自动应答、也不会进入桥接,所以同一台设备连着的时候也可以放心回放。
现场录制
文件 → 录制会话… 需要确认三项:
- 文件:录制写到哪里。默认建议「文档」下
SPU Recordings文件夹里的SPU-日期-时间.spulog,并记住你选的文件夹。之前的录制不会在不询问的情况下被覆盖。 - 从本次会话中 SPU 已保留的数据开始:默认勾选。SPU 在内存里为每个连接保留最近的收发(每个连接 2~8 MB,合计不超过 32 MB),勾选框后面会写明现有多少,例如「2 个端口, 3.21 MiB 自 13:40 起」。勾上它,你想到要录制之前刚刚出现的那次异常也会在文件里。
- 每 100 MB 另起一个文件:长时间录制会分成若干卷(
…-part2.spulog、…-part3.spulog……),每卷 16~2048 MB。回放播到一卷的末尾时,会出现一行提示,点打开即可接着看下一卷。
点开始录制。窗口里的全部连接都会被录制,收发两个方向按时间合并,直到你停止。之后新加的连接会自动加入;参数修改、端口打开或关闭、连接移出窗口,都会在文件里记一笔。打开别的工程不会中断录制,关闭 SPU 时录制会正常收尾。
录制期间,状态栏显示红色的 ● 录制中,以及已录时长和文件大小。点它可以停止录制、添加书签、在文件夹中显示,或回放此录制——打开截至目前已写入的部分。
文件每 250 毫秒写一次盘。SPU 或电脑意外退出时,最多丢掉最后不到一秒,文件照样能打开,回放窗口会提示录制在一行中间结束。写盘失败(磁盘满了、U 盘被拔掉)时,录制立即停止并说明原因,已写入的部分仍然可读。Mac App Store 版的录制始终是一个文件,每次都由保存面板选择位置。
F9 在当前连接上标记此刻:不弹窗,也不用打字,这一刻不会错过。书签自动命名为 书签 1、书签 2……,回到回放窗口再改名。不在录制时 F9 同样有效:书签随本次会话保留,之后以「从本次会话中 SPU 已保留的数据开始」开始的录制、回放本次会话都会带上它,它还会作为一条备注出现在该连接的会话导出和诊断包里。
回放窗口
文件 → 打开录制… 在独立窗口里打开录制。可以同时打开多份,每份一个窗口,关闭 SPU 时一并关闭。大文件打开时读一遍并显示进度,之后跳到任意时刻都是即时的。
录制里的每个连接各有一个视图,并排显示;视图 → 竖向排列 改为上下排列。一开始显示前四个,视图 → 端口 可以逐个显示或隐藏。视图标题显示播放头所在时刻该端口的名称和参数。
每个视图有自己的视图 ▾菜单:接收与发送分别选 Hex 或文本,接收编码、发送编码、时间戳、显示发送数据、放大、缩小、重置缩放,以及两个按录制时间重现的面板:
在视图里右键,可以选区复制为(C 数组、Hex Dump 或十六进制字节)、选区另存为…、查找…(只在本视图里查找)和在此处添加书签。
时间轴下方一行显示播放头所在的时刻、从开头算起的时间与总长(+00:12:34.567 / 01:05:00.000),以及当前是第几条事件、共几条。时间按本机时区显示;录制是在别的时区做的,鼠标停在时间上会显示录制地,例如「录制于 Asia/Shanghai(UTC+08:00)」。
播放控制
工具栏依次是回到开头、后退一帧、播放/暂停、前进一帧,然后是:
- 速度:0.25x、0.5x、1x、2x、5x、10x、100x 或最快。1x 时数据按线路上原来的间隔出现。视图跟不上时(例如繁忙线路上的 100x),状态栏会说明,并尽可能快地显示。
- 跳过超过 5 秒的空闲:默认勾选。超过这个时长(1~60 秒)的静默一律按这个时长播放,等故障等了一个小时,回放时不必再干等一个小时。取消勾选则保留每一段原始间隔。速度和这项设置都会被记住。
时间轴显示整份录制的收发疏密、上方的书签标记和播放头。点任意位置即跳到那里;拖动时时间跟着鼠标走,松开才跳转。鼠标停在书签标记上会显示书签名和时间,点它直接跳过去。播放 → 转到时间… 可以精确到毫秒地跳到某个时刻。
跳转后,每个视图会重新画出这一刻之前的数据,保证有上下文;一行 -- 从 … 开始显示 -- 标出重画部分的起点。前进一帧在显示着的连接上显示下一段数据——一次接收或一次发送,后退一帧把最后一段撤回。
| 按键 | 在回放窗口中 |
|---|---|
| 空格 | 播放/暂停 |
. 和 , |
前进一帧/后退一帧 |
| Home | 回到开头 |
| Ctrl+G | 转到时间… |
| Ctrl+Shift+F | 在录制中查找 |
| F9 | 在播放头处添加书签 |
] 和 [ |
下一个书签/上一个书签 |
| Ctrl+S | 保存书签 |
| F5 | 重新载入:读入仍在增长的文件新写入的部分 |
| F11 | 全屏 |
| Ctrl+W | 关闭 |
macOS 上用 ⌘ 代替 Ctrl。焦点在按钮、下拉框或列表上时,空格照常归它们使用。
在录制中查找
工具栏上的在录制中查找输入框(播放 → 在录制中查找,Ctrl+Shift+F)搜索整份文件,包括还没播到的部分,直接跳到匹配处:回车或下一个匹配从播放头向后找,Shift+回车或上一个匹配向前找。视图会画到匹配结束的位置,并高亮匹配内容。
- 文本按第一个显示着的视图的接收编码查找。勾选 Hex 可以直接输入字节,如
48 65;Aa 区分大小写。 - 搜索范围是显示着的连接的收发两个方向、录制里的备注(例如端口关闭)以及书签名。
- 一条回复分两次到达(串口上很常见)照样能匹配;不同端口、不同方向或不同 TCP 客户端的数据不会拼在一起匹配。
- 大文件在后台搜索,进度显示在状态栏,按 Esc 停止。
视图右键菜单里的查找…只在该视图显示的内容里查找。
书签与循环
右侧的书签列表(书签 → 显示书签列表)列出每个书签的时间、端口、名称和备注。书签有三个来源:现场按的 F9;回放窗口里按的 F9(在播放头处,归属焦点所在的视图);视图右键菜单里的在此处添加书签(在所点那一行的时刻)。
- 双击名称或备注即可编辑;双击时间或端口则跳到该书签。按 Delete 删除选中的书签。
]和[在书签之间前后跳转。播放经过书签时,视图里会出现一行书签标记。- 文件 → 保存书签(Ctrl+S)把书签保存进录制文件本身,文件发给谁,书签就跟到谁那里。有未保存的修改时标题栏带
*,关闭窗口时会询问。只读文件、仍在录制的文件和「回放本次会话」的临时文件存不进去,改用文件 → 另存副本…保留书签。
要反复播放某一段——演示,或者盯着一次故障直到看明白——在列表里选一个书签(到下一个书签为止)或两个书签(两者之间),再点在书签之间循环。播放会一直绕着这一段转,直到再点一次;这一段在时间轴上以浅色标出。给一屋子人演示时,视图 → 全屏(F11)加上各视图的放大,投影上也看得清。
本次会话与仍在写入的文件
- 文件 → 回放本次会话 回放本次会话中 SPU 在内存里保留的数据(各连接最近的收发),连同期间按下的 F9 书签。无需先保存:回放用的是临时文件,关闭窗口即删除;文件 → 另存副本…可以把它连同书签存成
.spulog。 - 仍在录制的文件也能打开:点状态栏录制菜单里的回放此录制,或用「打开录制」。文件 → 重新载入(F5)读入之后新写入的部分,播放头停在原处不动。这份文件的书签要等录制停止后再保存,或者另存副本。
发送与导出
- 发送文件。
.spulog包含各连接收发的全部数据、端口名称与参数,以及保存进去的书签。分卷的录制要把全部分卷放在同一个文件夹里一起发送。发给公司以外的人之前,先确认录制里有什么。 - 脚本也能读。
.spulog是 JSON Lines 格式,与「文件 → 导出会话…」导出的 JSON Lines 相同(见导出数据与诊断包)。 - 文件 → 导出区间… 把录制的一段保存为 JSON Lines、CSV 或文本:开着循环时导出循环段;否则导出列表里选中的书签(两个或以上)之间的一段;再否则导出整份录制——都只包括显示着的连接。
- 文件 → 另存副本… 把整个文件连同书签另存为新文件。
Free 与 SPU Pro
把问题录下来并交出去所需的一切,Free 里都有:
- 录制,包括自动分卷和 F9 书签,时长与次数都不限;
- 打开录制、时间轴、书签(命名、备注与保存)以及在整份文件里「在录制中查找」。
回放在 Free 里播放每份录制的前 10 分钟:
- 时间轴仍显示整份录制,10 分钟之后的部分画斜线;那里的书签照常列出,跳过去会停在 10 分钟处;
- 「在录制中查找」会统计 10 分钟之后的匹配数,但不跳过去显示;
- 10 分钟从整份录制的开头算起,而不是每一卷各算一次,长录制的后续分卷没有自己的 10 分钟;
- 回放本次会话取本次会话最近的 10 分钟;
- 导出区间导出区间内每个连接最近的 500 条记录;
- 回放里的波形图和协议解码不计入额度:不占用实时连接每次启动的 120 秒绘图时长和 120 秒解码时长,同一段数据不会被计两次。不消耗额度的限制照常生效:波形图只绘制前 2 个通道,只有第一个帧模板参与解码。
播放第一次撞到限制时,SPU 会提示一次(每次运行只提示一次);之后视图上方会有一行说明限制在哪里,旁边是了解 SPU Pro。
SPU Pro 回放整份录制和 SPU 保留的全部会话数据,导出区间导出整个区间,每次最多 64 MB。