将略观察 Logo JiangLue.com将略观察
返回报告
WORK 02 / 道尺 · 码迹

覆盖率、性能、长时间跟踪回放,
一次插桩,三件事都答得上来。

面向 C/C++ 工程的代码分析工具。一套插桩同时产出三类结果:结构覆盖率、函数级耗时、执行路径回放。每次执行都留痕——插了什么、跑到哪、与上一版的差异。

形态Windows 桌面 · 命令行 · 浏览器模式
三类测量覆盖率 · 性能 · 跟踪回放
版本v0.5.0 · 内测中 · 不挂公开下载
我做的产品定义 · 交互 · AI 协作实现
01 · 六个动作,四种产出

从建工程,到看见三种数字。

下面六屏都是产品真实界面。四个场景共用同一套工程与插桩:选覆盖率,看到四个口径;选时序分析(就是性能),看到函数耗时与 p50–p99;选长时间跟踪回放,看到的是一行行执行路径。

道尺 · 码迹 v0.5.0
项目中心:多个工程以卡片排列,每张卡显示 C0、SC、C1、双判四个口径 新建向导第一步:四张场景卡 —— 覆盖率验证、时序分析、执行追踪回放、融合采集 场景配置:按 ISO 26262 / DO-178C / IEC 61508 选择标准与等级 作业界面:左侧原始源码与插桩后源码逐行对比,右侧覆盖率面板 时序场景的产出:函数耗时表,列出调用次数、总耗时、自身耗时、平均、p50/p95/p99、最大值与占比 长时间跟踪回放的产出:按线程分组的时间线,逐行列出时间、行号、函数、事件与耗时,并可按步前后翻

02 · 三个问题,三种读法

四个场景,四种产出。

覆盖率、时序、追踪常被笼统叫成「测试分析」。它们其实回答三个不同的问题,也各有明确不做的部分 —— 边界先说清,数字才可信。

1覆盖率验证 · 够不够

问:这个函数、这行代码被执行到了没有?够不够 ASIL B / DAL C / SIL 3 的要求?
给:支持四类覆盖率 —— 函数覆盖率(C0)、语句覆盖率(SC)、分支覆盖率(DC)、MC/DC 覆盖率。按 ISO 26262、DO-178C、IEC 61508、EN 50716 的等级要求,自动推导这一轮要采哪几类。MC/DC 按独立配对数计,不报百分比。
不做:不采语句级时间戳;源码或构建指纹不同,不做跨版本合并。

2时序分析 · 慢在哪

问:哪个函数最慢?调用多频繁?两行代码之间隔了多久?
给:只在函数边界读钟 —— 调用次数、总耗时、自身耗时、平均值与分位耗时(p50–p99)、最慢一次、调用边、两点区间;可按历史执行做跨轮次对比。
不做:不做 WCET、抖动、截止期判定。

3长时间跟踪回放 · 怎么跑的

问:它到底按什么顺序跑的?调用栈有多深?这一行是什么时候执行的?
给:函数进出记录成事件流,按线程分组的时间线,可逐步前后翻,点某行跳回原始或插桩后源码。支持长时间采集,达到容量上限自动停止并记录丢弃数。
不做:不跨进程合并时间线(时钟基准不同);环形缓冲与 Qt 信号槽语义追踪仍是 Phase 2。

4融合采集 · 一次跑完

问:能不能跑一次,同时给我覆盖率、耗时和回放?
给:一次运行三路同采(覆盖 + 耗时 + 事件流),把「走到了哪、花了多久、怎么走的」对齐到同一次执行。
代价:开销最大,耗时含采集开销,不能当性能基准 —— 要干净的数,单独建时序工程。

03 · 五条设计约束

每条数字都能追到源头。

下面五条不是功能列表,是产品在具体环节上的处理方式。

A先定标准,再定口径

先选标准与等级 —— ISO 26262 ASIL A–D、DO-178C DAL A–D、IEC 61508 与 EN 50716 SIL 1–4,由工具反推这一轮要采哪几类覆盖证据,再进采集配置。

B插桩要让人看得见

原始源码与插桩后源码并排显示、逐行标色:插了什么、插在哪、哪行还没跑到。覆盖率对不上时,直接定位到具体行。

C不碰你的工程

只在副本上插桩,原文件留一份备份;同一份源码被第二个工程拿去插桩会被拦住,并给出恢复方式。不改动原始文件。

D跑不动就别装能跑

构建失败、工具链没认出来、探针数对不上,界面就直说失败并给出原因,不拿上一次的数字顶上。覆盖率工具最贵的不是功能,是"它说的数我敢不敢签"。

E耗时要说明「含不含采集」

融合采集一次给出覆盖率、耗时、回放,但它的耗时含插桩与写盘开销。报告里会标注这一点;要报性能数字,单独建一个时序工程。

04 · 技术底盘

全程离线,装在工位上就能跑。

COVER覆盖率:四个口径

函数 C0、语句 SC、分支 C1·DC、判定 MC/DC;按 ISO 26262 / DO-178C / IEC 61508 反推要采哪几类,按函数逐行列出来。

TIMING性能:只在函数边界读钟

调用次数、inclusive / exclusive、平均、p50–p99、最慢一次、函数周期、调用边、两点区间。不做 WCET 与抖动。

TRACE长时间跟踪回放

函数进出事件流 → 按线程分组的调用栈时间线;容量闸按条数与字节兜底,回放分页 240 步,点行跳源码。

FUSION融合:一次跑,三份数据

cov + time + trace 三路同开,把「走到了哪 + 花了多久 + 怎么走的」对齐到同一次运行。耗时标注含采集开销。

PROBE四类探针

函数进入退出、语句到达、分支选取、条件判定(MC/DC)。探针集合由场景与标准等级决定。

FORM桌面 + 命令行 + 浏览器模式

主界面走 WebView2,老机器用浏览器模式只监听本机;C / C++ 接你自己的工具链(MinGW、MSVC、Qt),不改构建脚本。全程离线。

06 · 下一步

想看看它跑在你自己工程上的样子?

现在还是内测版,不挂公开下载。如果你是 C/C++ 团队 —— 不管是缺一份能签字的覆盖率证据、想找出哪个函数拖慢了节拍、还是要复现一次说不清的执行顺序,我都可以带你跑一遍:用你自己的工程,在你的机器上,离线。

关于截图:界面截图取自本机实测(v0.5.0 修复版,2026-11-01)—— 覆盖率、时序、执行回放三种产出都在里面;数字来自包内自带的公开样例(01_single_file、bench),不含任何客户代码。
关于版本:v0.5.0 还在内测,已知问题在修 —— 包括 MC/DC 的完整性校验、以及部分工具链的自动识别。这些不藏着,正式版会补上。