QT程序出现Bus Error问题的调试

本文档详细探讨了QT程序在嵌入式系统中遇到的Bus Error问题,特别是数码相框程序。分析了可能的原因,如未对齐访问、内存不足、库不一致等,并通过调整编译参数、避免函数重入以及改变填充区域的方法,减少了错误的发生。尽管问题尚未完全解决,但已显著提高了程序的稳定性。
摘要由CSDN通过智能技术生成

1.文档目的

本文档目的在于探究部分QT程序在嵌入式板子上出现Bus Error问题的调试及解决方法;

以数码相框程序出现的Bus Error为例;

2.原因分析

2.1 产生Bus Error的可能原因: 

Bus Error即总线错误, Bus Error通常都是因为非对齐访问造成的。CPU在设计上为了性能上的考虑,要求待访问,操作的数据地址都要对齐。如果发现没有对齐的访问,就会向当前进程发出SIGBUS信号,使程序崩溃。RISC包括MIPS都是这种类型的芯片。而X86架构就没有这种对齐要求。所以代码在嵌入式环境下有总线错误而在X86下面可能就没有问题,当然这是有性能的代价。

Bus Error的产生除了上边提到的访问数据地址对齐问题之外,还可能是因为一下原因:

1 机器物理问题或者访问无效物理地址,但这种情况非常少见。

2  Linux平台上执行malloc(),如果没有足够的RAM

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值