跳到主要内容

5.6 运行时变量监控​

ChipON VSCode Extension 提供了内建的 Variable Monitor (运行时变量监控) 组件,可在程序运行及暂停期间实时采样目标全局变量或数据结构,并以动态时序折线图的形式可视化呈现数值变化趋势。


视图概览与打开方式​

  1. 在 VSCode 底部面板区域,点击 Variable Monitor 标签页打开监控界面。
  2. 视图整体划分为三大功能区:
    • 左侧边栏:被监控变量列表,支持变量录入、删除、颜色映射与曲线显隐开关;
    • 中间图表区:实时多通道时序折线图,支持波形缩放、拖拽与历史数据回溯;
    • 底部状态栏:显示当前采样监控状态(Idle / Monitoring)及最近一次数据更新时间戳。
面板位置与快捷键

如果底部面板未显示,可使用快捷键 Ctrl + J 唤起面板,或通过顶部菜单 View → Appearance → Panel Position 调整面板停靠位置。

运行时监控变量视图


前置条件与启动调试​

变量监控功能深度依赖当前活跃的调试通信管道,开始监控前需满足以下条件:

  1. 启用调试符号:确保项目构建配置中已开启调试符号(-g),以便调试器解析变量的符号与类型信息;
  2. 启动调试会话:按快捷键 F5 或通过侧边栏启动 kf32-lldb 调试任务;
  3. 按钮激活:调试建立连接后,Variable Monitor 工具栏上的 Start 按钮将由置灰状态转为可用。
未启动调试提示
  • 若未建立调试会话直接点击 Start,系统将提示:"No active debug session. Please start a debug session first."
  • 状态栏将维持在 Idle 空闲状态。
  • 调试会话终止后监控将自动暂停,已采集的历史数据仍完整保留在画布中供分析。

添加监控变量​

系统支持最多同时跟踪 16 个 变量,并为每个通道自动分配区分度高的色彩。

方式 A:手动录入变量或表达式​

  1. 在左侧边栏顶部的输入框中输入变量标识符(如全局变量 g_counter);
  2. 支持直接输入结构体成员或数组元素表达式,如 g_sensor.temperature、g_data_buffer[2];
  3. 按 Enter 键或点击右侧 ✓ 确认按钮即可添加至通道列表。

方式 B:从符号树中选取(推荐)​

  1. 单击输入框,系统将自动基于当前固件的 DWARF 符号表加载可监控变量树;
  2. 展开层级树,直接点击目标叶子节点,变量名将自动填入输入框;
  3. 可以在输入框中键入关键字,实现按名称或数据类型的快速模糊过滤。

添加运行时监控变量

符号过滤机制
  • 只有具备明确 DWARF 类型信息的变量才会被列入树形选择列表;链接器生成的内置边界符号(如 __heap_end、__bss_start)将被自动过滤,避免干扰。
  • 已加入监控列表的变量不会在下拉建议中重复显示。

启动与分析监控波形​

  1. 开启监控:添加至少一个监控变量后,点击工具栏右侧的 ▶ Start 按钮;
  2. 实时绘制:
    • 按钮状态切换为 ■ Stop;
    • 状态栏显示 ● Monitoring 运行指示灯;
    • 图表区域将随时间轴滚动,多通道并行动态绘制变量数值曲线。
  3. 停止与回溯:点击 ■ Stop 可结束采样;停止后图表画布保留全部已采集的历史点位,可通过鼠标滚轮缩放时间轴或拖拽滚动条细致排查波形毛刺与异常突变。

启动运行时变量监控

运行采样特性
  • 断点挂起与恢复:若目标芯片正在运行,点击 Start 后状态栏可能会提示 ⏳ Waiting for target to stop...,在芯片下一次命中硬件断点时自动恢复连续采样。
  • 持久化缓存:停止监控后历史波形依然缓存在前端面板中,切换至其他 VSCode 标签页再切回时数据不会丢失。
  • 数据无效检测:若所选变量在当前内存作用域无法读取(例如无效指针或未分配),左侧状态栏将显式标记数据无法采集。