1. 逻辑问题
最常见的一类问题.
大部分通过单步调试,打断点, 加打印, 可以解决.
问题复杂度取决于逻辑复杂度,和代码复杂度,
清晰的程序逻辑,良好的编程风格,
可以减少逻辑问题,
即使出现也比较好排除
2. 算法问题
可能是算法性能本身达不到要求
这时候就需要算法工程师仿真, 调参去解决
也可能是实现和仿真不完全一致
比如仿真时浮点, 实现是定点, 定点的精度比浮点低
3. 时序问题
这类问题很难通过调试解决,
主要靠场景分析和试错
经常发生在任务的切换或同步那段时间
曾经遇到过串口发送切换协议时数据错误,
接收can通信数据包被覆盖,
硬件解码器数据错误
均是没法通过调试解决
4.偶发问题
因为难复现, 所以不好定位
曾经遇过每天凌晨1点出现故障