1004.串口收发数据集成bug
最近一个碰到一个串口数据解析的bug,调试了整整7天,从排除问题,优化代码,到真正发现问题所在, 期间经历感觉好像找到了bug,其实是找到的另外一个bug,期间不断排雷, 不断惊喜,不断 失望,以为找到问题所在,其实并没有找到核心问题。 现在对此记录一下。 1 场景描述: 模块功能:以100ms 速度,对外发送各种不同类型数据,都是接受相同类型的数据。 测试: A1 程序运行在ubuntu上,通过usb转串口,连接无线小模块,进行数据收发。 A2 程序运行在另外一台ubuntu上,通过usb转串口,连接无线小模块,进行数据收发。 2 诡异现象描述 每次都在 new 一个对象处出现段错误,由于此对象是由google的protobuf 框提供的技术,进行创建 ,由该第3库进行内存管理, new后,框架进行释放。所以 一开始,将问题定在此处,以为是内存不足导致。经实际以top进行观察,发现内存的 使用率,并不高,大概在0.3%左右进行波动,那么排除内存不足 问题。 错误信息提示,memory corruption (fast) . 显示内存溢出,又继续查看所有的线程中使用的new,发现 仍然一无所获 ,实在 调不 下去了。 3 改变调试思路 1 只运行A1程序,取消串口上的无线小模块,将串口的收发互联进行测试。代码可以一直跑下去,不出错误。 2 使用2台电脑,进行互测取消掉,无线模块