Quantcast
Channel: 蓝牙论坛 - 最近的话题
Viewing all articles
Browse latest Browse all 7485

移植到BLE 1.4.2.2后出现的堆栈溢出问题

$
0
0

去年在BLE 1.4.0的SensorTag代码基础上完成了一个小项目,一直运行正常。前几天打算移植到BLE 1.4.2.2,依然是在V1.4.2.2范例SensorTag的基础上进行修改。现在出现问题,运行之后出现堆栈溢出问题,提示信息有两种情况,第一种情况是按照提示选择Debug>Break后Log窗口除了下面的,没有其他信息。

Fri Sep 16, 2016 21:11:17: Warning: Possible IDATA stack overflow detected. To see the instruction that caused the possible overflow, choose Debug>Break and close this message box. To continue execution, just close 

第二种情况是,除了这条信息后,还有一条这个信息:

Fri Sep 16, 2016 21:22:27: The stack pointer for stack 'IdataStack' (currently IData:0x0C) is outside the stack range (IData:0x40 to IData:0x100)

第一种情况的屏幕截图如下:

可见SP=0x47,其实并没有超出堆栈范围。但是IDATA窗口中所有值都已变化,也就是说这些空间的确被使用过了。Call Stack有完整的痕迹,没见有啥异常。

第二种情况的屏幕截图如下:

可见此时SP值的确已经溢出,IDATA窗口中可以看到所有区域都有更改的痕迹,也就是stack的确都被使用过了,Call Stack窗口中只有一条记录,不过每次都不一样的。

对比用BLE 1.4.0编译时候的map信息,跟用1.4.2.2的基本差不多,如下

请问是什么原因导致这种情况?有何办法跟踪分析?


Viewing all articles
Browse latest Browse all 7485

Trending Articles