调试
调试
调试功能是快速发现和消除程序中存在问题的必要工具。掌握必要的调试技能也是快速编写出可以正常运行程序的基本要求。
调试节点
标准库 ticos/debug 中包含了用于调试目的的一系列节点。除了使用起来跟其他的一般节点非常一致,调试节点的一个特征是当调试进程启动后,这些节点都是可交互的。
观测
节点位置: ticos/debug/watch
这个节点会在自己的内部直接打印输入端口获取的值。比如将该节点的输入端口连接到 count 节点的输出端口,我们将会看到计数值的持续增长。
打印
节点位置: ticos/debug/console-log
跟 watch 节点基本上一致,除了这个节点会将观测结果打印到部署窗格。相比 watch 节点比较适合用于观测长度较短的数值类结果,这个节点更适合观测那些比较长的内容,比如字符串内容。
模拟输入
例如 ticos/debug/tweak-number
的一系列 tweak-* 节点。
这些节点可以当常量节点使用,但是在调试过程中我们可以修改这些节点所包含的值,从而观察程序在不同输入下的运行情况。
调试节点在两种运行模式下起作用:模拟运行和板上调试。
模拟运行
模拟运行模式不依赖于任何物理硬件,因此比较适合用于测试跟硬件无关的业务逻辑。
模拟运行的程序在云端编译,因此开发者在使用此功能之前需要接入互联网且有账号。
要以模拟运行模式运行程序,只需点击菜单部署 -> 模拟运行、或者在右上角的选择设备下拉窗口中选择模拟设备后点击调试、或者右下角工具栏上的游戏手柄图标即可。这个编译过程比较费时间,因此会需要稍微等一会才能看到程序进入模拟运行模式。 在模拟运行模式启动后,我们会看到 IDE 打开了一个新的叫调试器的新窗口。
点击调试窗口右上角的停止按钮就可以退出模拟运行模式,也可以直接关闭调试器窗口。每次新的运行都会导致完整的云端编译过程。
板上调试
与模拟运行不同的是,板上调试可以使用真实的传感器等各类元器件,比如温度传感器、LED、伺服电机等,从而得到更接近于真实环境的程序运行表现。
为了启动板上调试,请按照如下步骤:
- 点击菜单部署 -> 上传到开发板;
- 选择当前连接的开发板型号;
- 选择具体要连接的开发板;
- 注意点选对话框中的上传后启动调试选项框;
- 点击上传按钮;
您也可以按照如下步骤操作执行:
- 点击右上角选择设备型号下拉窗口选择当前连接的开发板型号;
- 点击右上角选择设备下拉窗口选择当前连接的设备;
- 点击调试按钮;
接下来 IDE 将会将代码编译并打包为符合目标开发板要求的固件格式,然后将该固件刷入到开发板,之后会如上述模拟运行模式一样,打开一个新的调试器窗口,且所有的调试节点将会进入调试状态。
我们可以尝试搭建一个符合如下需求的开发板环境,并运行板上调试:
节点展开
当开发一个复杂项目的时候,会组合大量的现有或者自定义的工作流。我们通常需要在调试过程中查看组合的工作流的内部状态,这种情况下就需要用到一个必备的调试技能:节点展开(Drill-down)。
如果我们对某个节点感兴趣或者需要查看内部状态,我们可以直接双击这个节点并看到类似如下的场景:
可以看到顶部从左到右的这个面包屑,对应到一个完整的展开路径。
其他调试方法
除了如上的基本调试工具,我们还可以使用如下的辅助调试手段:
我们可以使用部署窗格里的连接设备串口功能和设备进行交互。我们可以使用这个功能来直接配置一个 UART 设备,或者查看这个设备的原始调试协议;
自动化测试工具 Tabtest,适合用于对单一节点和工作流进行单元测试。