Skip to content
| Marketplace
Sign in
Visual Studio Code>Debuggers>USB Trace 采集分析New to Visual Studio Code? Get it now.
USB Trace 采集分析

USB Trace 采集分析

Aaronlu2026

|
32 installs
| (0) | Free
USB Trace 采集分析工具的 VS Code 面板:抓取 VCD 波形与 LOG 日志两大类数据,解码为标准 VCD,做确定性事实提取与断言检查。内置同名命令行 usbtrace,全命令支持 --json,便于脚本与 AI 自动化。
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

USB Trace 采集分析

面向嵌入式调试的 USB Trace 采集分析工具:从目标板抓取 VCD 波形与 LOG 日志两大类数据, 解码成标准 VCD,做确定性的事实提取与断言检查。

同一套引擎,两种用法:本扩展的图形面板,以及内置的命令行 usbtrace (全命令支持 --json,适合脚本与 AI 自动化)。两者读写同一份配置文件 (多标签时每个标签一份,1 号标签即主配置), 面板里设好参数后,命令行未显式指定的选项会自动取配置文件里的值 (子命令本身仍要给出,例如 usbtrace capture vcd)。

术语

  • USB Trace —— 本工具链的统称,涵盖下面两大类。
  • VCD —— 波形类。来自 USB trace 字流,解码为标准 VCD 文件。
  • LOG —— 日志类。来自接口 0 的 HCI/debug 日志。

文中出现「USB Trace」时指整体,「VCD」「LOG」分别指其中一类。


快速开始

  1. 装好 Python 3.8+,并确保 python 在 PATH 中 (或用设置 usbtrace.pythonPath 指定解释器路径)。

  2. 按 Ctrl+Shift+P 运行 USB Trace: 自测(不接硬件),输出窗口出现 ALL PASS 即环境正常。

  3. 运行 USB Trace: 打开工具面板,在面板左侧:

    要选什么 选什么
    文件命名参照 一个 bin 文件(只用于命名产物,不要求文件存在)
    信号参考文件 你的 def.h(决定能解析出哪些信号)
    分析规则文件 断言规则 spec.json

    再确认**系统时钟频率(MHZ)**与固件一致。

  4. 在停止设置 → VCD 把「时长(秒)」设为 3,点 VCD采集。

  5. 点 打开 VCD 看波形(只打开当前配置的最新产物;其他路径用 打开 VCD 文件…,或命令面板 USB Trace: 打开 VCD 文件…), 点 分析 生成分析报告。

装好插件后会自动弹出分步引导(也可以用命令面板运行 Welcome: Open Walkthrough 找到 「USB Trace 快速上手」)。更详细的说明见下方文档。


功能

采集

  • VCD 采集 —— 边采边解码为标准 VCD,GTKWave 可直接打开。
  • LOG 采集 —— 从 interface 0 读取 HCI/debug 日志,实时解析滚动显示并写文件;日志区默认自动跟随最新一条(向上翻阅旧日志时暂停,滚回底部恢复)。
  • 两路独立可并行,也可用「联动停止」让一侧停止时带动另一侧。
  • 停止方式:VCD = 时间 / task 信号触发;LOG = 时间 / 字符串触发。 两者都支持按钮强制停止,按钮永远最高优先级。
  • 时长为 0 表示不限,一直采到点停止。
  • 支持未上电等待与断线自动重连;时长从设备首次就绪开始算, 所以「先启动采集、再给设备上电」能采到完整时长(抓启动过程就靠这个)。
  • 设备枚举徽标 —— 打开面板自动枚举当前配置的设备:(device found) 时默认启动 日志采集,不在线显示 (device not found);点击徽标可重新枚举。

USB Shell

  • 日志区下方直接发 hex 命令(如 11 03 31 查 TWS 角色):命令走 LOG 接口 (MI_00) 的 EP5 OUT,固件输出照常走 EP3 IN 日志流,和日志在同一个面板里看。
  • 内置「查询状态 11 03 31」「保存配对信息 11 03 10」两条常用命令; 任意命令可「存为常用」保存到用户级列表,支持删除。
  • 支持输入历史(↑/↓)、危险命令(关机/配对/切换模式/改名)二次确认。
  • 命令行同样可用:capture log --stdin-shell,见 CLI 参考。

多设备 / 多标签

  • 采集预设 —— 把整套参数存成命名快照,一键切换(例如左右耳 0x120 / 0x121)。
  • 多标签并行 —— 每台设备一个标签,各自独立的配置与采集进程,可同时采集与观察; 同一设备重复采集、或覆盖模式下输出文件相同会阻止启动。
  • 预设库全局共享;标签标题显示预设名与设备号,关闭后再按同一编号新建会沿用上次参数。

分析

  • 波形分析 —— 信号/事件统计、周期与抖动、脉冲宽度、多 bit 单调性、 关联 LOG 的标签趋势。确定性事实提取,不做启发式结论,结论留给人或 AI。
  • 断言检查 —— 按 spec 校验事件是否存在、周期是否达标、时序先后、事件时刻的信号取值。
  • LOG 规则检测 —— 8 类可配置规则(关键字、序号跳变、标签缺失、计数上下限、 数值范围、趋势、静默间隔、解析失败)。
  • 打开任意 VCD —— 面板「打开 VCD 文件…」或命令面板 USB Trace: 打开 VCD 文件…,选择任意路径的 .vcd 用 VS Code 默认编辑器打开。

自动化

  • 内置命令行 usbtrace,全命令 --json(stdout 只输出一个 JSON 对象)、退出码统一。
  • usbtrace run 一键跑完 采集 → 分析 → 断言。
  • usbtrace schema --json 自描述命令目录。

常见问题

症状 先查什么
一直「等待设备上电...」 板子是否上电、USB 是否接好、VID/PID 是否对(用 USB Trace: 设备信息 确认)
板子确实连着、却仍一直「等待设备上电...」(64 位 Python) 0.2.4 及以前在 64 位 Python 下取不到设备接口路径 升级到 0.2.5+
采集到 0 字节 设备没被识别到 / 固件没在跑 —— 用 USB Trace: 设备信息 确认设备在线,核对 VID/PID
所有时间成比例偏大/偏小 系统时钟频率是否与固件配置一致
task 信号下拉框是空的 信号参考文件是否还指向内置示例 —— 点「浏览...」选中你自己的 def.h
「打开 VCD」提示文件不存在 还没采集过
改动参数后命令行没生效 是否取消了「自动保存」—— 勾回,或点「保存配置」
提示找不到 Python 安装 Python 3.8+,或在设置里填 usbtrace.pythonPath

采集与设备枚举仅支持 Windows(通过 usbprint.sys 访问目标板), 32 位与 64 位 Python 均可。解码、分析、断言、自测跨平台可用。


命令行

装了扩展后,CLI 会被落位到不含版本号的稳定路径,扩展升级后依然有效: ~/.usbtrace/usbtrace(Windows 为 %USERPROFILE%\.usbtrace\usbtrace.cmd)。

~/.usbtrace/usbtrace doctor --json

没配过的话 doctor 会返回 ready: false 并列出 blockers(缺什么、怎么修), 而不是「全部通过」。只做分析不做采集时用 doctor --for analyze。

不确定路径在哪时,运行命令 USB Trace: CLI 路径。 从源码仓库开发时也可直接用仓库根的 ./usbtrace。

常用命令:

usbtrace doctor --json                 # 自检:ready=true 才表示「可以采集」
usbtrace run --seconds 3 --json        # 一键:并行采集 → 分析 → 断言
usbtrace capture log --stop-string ASSERT --json
usbtrace capture log --stream --stdin-shell --seconds 30   # 边看日志边下发 USB Shell 命令
usbtrace analyze vcd --with-check --json

退出码统一:0 成功 / 1 断言失败 / 4 仅日志规则命中(多为关键词误报)/ 2 用法错误 / 3 运行时错误。run 的 summary.verdict 会直接给出结论。

完整命令、参数、输出字段与自动化配方 → python/CLI.md


文档

装好插件后,点采集面板顶部的 「帮助文档」 按钮即可打开下面两份文档, 也可以从命令面板运行:

命令 内容
USB Trace: 使用指南 界面详解、操作步骤、产物读法、断言与规则写法、故障排查、设置速查
USB Trace: 命令行参考 全部命令/参数/输出字段、退出码、自动化配方

在线版本:

文档 讲什么
UserGuide.md 怎么用:界面详解、操作步骤、产物说明、故障排查、设置速查
python/CLI.md 命令行参考:全部命令/参数/输出字段、退出码、自动化配方
CHANGELOG.md 版本变更记录

设置

设置项 说明
usbtrace.pythonPath Python 解释器路径(留空则自动探测 python / python3 / py -3)

其余参数(时钟频率、VID/PID/设备编号、文件路径、停止方式、联动停止、自动化模式等) 保存在工作区 .vscode/usbtrace.json,与命令行共用同一份。

面板上的「自动保存」(默认勾选)会在参数变更时立即写盘;取消勾选时,点「保存配置」 或任意采集/分析操作同样会保存。


目录结构

usbtrace / usbtrace.cmd      命令行入口(转发到 python/usbtrace_cli.py)
python/                      Python 引擎(命令行与扩展共用)
  usbtrace_cli.py            唯一 CLI 入口
  cliutil.py                 输出信封、退出码、错误模型
  usbcapture.py              USB Trace 采集传输层(VCD + LOG)/ 设备枚举(Windows)
  tracevcd.py                字流 → VCD 解码器
  logparse.py                LOG 包解析
  loganalysis.py             LOG 事实提取 + 规则引擎
  analyze_vcd.py             波形事实提取
  usbshell.py                USB Shell 命令解析(hex → EP5 OUT 帧)
  vcdcheck/vcdcheck.py       断言引擎
  config.py                  配置读写、路径解析
src/                         VS Code 扩展(TypeScript)
  extension.ts  commands.ts  captureManager.ts  configFile.ts  cli.ts  python.ts
  devices.ts                 设备号推导与采集产物路径
  presets.ts                 采集预设的交互流程
  shell.ts                   USB Shell 输入解析与危险命令判定
  vcdFile.ts                 选择并打开任意 VCD 文件
  docs.ts  deploy.ts         文档打开、CLI 稳定路径落位
  webview/                   面板 UI 与 webview 资源
  walkthrough/               首次安装引导的 markdown
scripts/                     构建脚本

构建(开发)

npm install
npm run copy-assets    # 复制 Python 脚本/静态资源/文档到 resources/
npm run compile        # tsc 编译到 out/
npm run package        # 打包(内置 copy-assets + compile),产出 usbtrace-x.x.x.vsix
  • scripts/copy-assets.js 决定哪些 Python 模块与文档进 .vsix; 新增模块或文档必须同步加进去,否则打包出的扩展会缺文件。
  • resources/ 与 out/ 是构建产物(已 gitignore),每次构建会重建。
  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft