工况和昆明云内配合使用时,工况设备会重启

相关文章
https://www.cnblogs.com/chino-ll/p/18026637


实验目的

工况升级时,复现死机问题

试验环境

工况软件版本是199,设备号464761859043359

试验结果

image
复现死机问题


死机问题排查

1、拔掉can线,远程升级固件,不会死机
说明,是can接收数据、处理数据的问题

2、can接收处理数据代码数量多,且涉及1939,对这一块内容陌生,一点点看代码,分析代码,比较耗时间。这一块的代码,逻辑是没问题的,只是哪里没处理好,导致死机了。通过二分法屏蔽代码,排除问题

3、屏蔽掉can消息队列,没有出现重启现象

4、一步步屏蔽代码,一点点排查问题

5、屏蔽如下代码后,没有出现死机
image
说明,找到问题根源了;细看代码,有操作数组,若数组溢出,破坏堆、栈内容,容易造成死机

6、正向验证,打印数组下标
image

image
发现数组溢出

7、修改代码,反复试验,未发生死机,问题解决


打印数据如下

点击查看代码

[10:31:14.138]收←◆[(OneMessage.Mxe.Data[0]-1)*7u] value is 7  
[(OneMessage.Mxe.Data[0]-1)*7u+1] value is 8  
[(OneMessage.Mxe.Data[0]-1)*7u+2] value is 9  
[(OneMessage.Mxe.Data[0]-1)*7u+3] value is 10  
[(OneMessage.Mxe.Data[0]-1)*7u+4] value is 11  
[(OneMessage.Mxe.Data[0]-1)*7u+5] value is 12  
[(OneMessage.Mxe.Data[0]-1)*7u+6] value is 13  

[10:31:14.196]收←◆[(OneMessage.Mxe.Data[0]-1)*7u] value is 28  
[(OneMessage.Mxe.Data[0]-1)*7u+1] value is 29  
[(OneMessage.Mxe.Data[0]-1)*7u+2] value is 30  
[(OneMessage.Mxe.Data[0]-1)*7u+3] value is 31  
[(OneMessage.Mxe.Data[0]-1)*7u+4] value is 32  

[10:34:55.160]收←◆[(OneMessage.Mxe.Data[0]-1)*7u] value is 14  
[(OneMessage.Mxe.Data[0]-1)*7u+1] value is 15  
[(OneMessage.Mxe.Data[0]-1)*7u+2] value is 16  
[(OneMessage.Mxe.Data[0]-1)*7u+3] value is 17  
[(OneMessage.Mxe.Data[0]-1)*7u+4] value is 18  
[(OneMessage.Mxe.Data[0]-1)*7u+5] value is 19  
[(OneMessage.Mxe.Data[0]-1)*7u+6] value is 20  
[(OneMessage.Mxe.Data[0]-1)*7u] value is 21  
[(OneMessage.Mxe.Data[0]-1)*7u+1] value is 22  
[(OneMessage.Mxe.Data[0]-1)*7u+2] value is 23  
[(OneMessage.Mxe.Data[0]-1)*7u+3] value is 24  
[(OneMessage.Mxe.Data[0]-1)*7u+4] value is 25  
[(OneMessage.Mxe.Data[0]-1)*7u+5] value is 26  
[(OneMessage.Mxe.Data[0]-1)*7u+6] value is 27  



posted @ 2024-07-11 10:38  我爱茜茜公主  阅读(1)  评论(0编辑  收藏  举报