前言
其实发生段错误的情况有很多:
其实在项目的开发中最有可能的错误就是①和②,考虑到本项目数组用的比较少,所以主要是考虑错误①指针的误用。
有时候错误就是那么离谱,声音也算是一种设备?????
出错原因:对语音模块发出开机的指令就会出现段错误,然后各种错误
有时候又没有段错误
找bug的过程:
第一次找:
怀疑是多线程的问题,把线程一个一个注释掉,发现第四个线程注释掉就不会出现“Segmentation fault”
解决思路:
对比其他三个线程的结构,有没有什么不一样。
对比下来发现,功能其实差的比较大,receive线程的主要目的是接收处理数据,而其他3个都是直接添加设备,果断转战下一个解决思路。
ps:这里补充VsCode的一个对比工具“Partial Diff”插件
差异对比犀利手册:使用 Partial Diff 插件在 VSCode 中比较代码差异_vscode提交代码对比插件-CSDN博客
还补充了 gdb调试 的基本步骤
---------------------------------------------------------------------------------------------------------------------------------
第二次找:
在receive线程里面一句一句的排查注释,最终锁定一段代码、一句话