背景
收到反馈多次功能测试后程序功能失效。
打开调试,测试了几次出现如下错误
[2]+ Bus error ./AppXXX
找BUG
有点莫名其妙,自己程序没有输出任何错误,直接bus error退了。
-
错误输出不是自己的打印格式,以防万一还是遍历了代码和所有库文件,未找到bus error!
-
百度搜索Bus error
搜到如下信息:bus error的解决方法
简单看了一些,就是数据对齐问题引起的bus error; -
查看新增模块的结构体定义
看了一下,结构体设计都有数据对齐。这里没找到问题,接下来看下内存操作的地方! -
memcpy检查
模块全局搜索,有6处memcpy,定睛一看,第一个就有问题。
错误像这样!
int c = 0;
char a = 0, b = 0;
memcpy(&a, &b, sizeof(c));
不知道是老眼昏花呢,还是帕金森手抖了,1字节内存拷贝长度sizeof()了一个4字节的变量!!!
著作权

在功能测试中,程序频繁出现Bus error,通过排查代码和库文件未找到直接原因。经搜索了解到该错误可能由数据对齐问题引起。检查结构体定义未发现异常,进一步检查memcpy使用发现一处错误,即1字节内存拷贝长度错误地用sizeof()获取了4字节变量的大小,修正后解决了问题。
订阅专栏 解锁全文

277

被折叠的 条评论
为什么被折叠?



