电子大神的日记本,供应链专家的功夫茶盘,在这里记录、分享与共鸣。

登录以开始

如何检测STM32的堆栈溢出

STM32单片机的堆栈自顶向下,从符号__initial_sp开始,到符号STACK结束。
如果函数内部定义了大数组,或者参数传递过深,就会造成堆栈溢出,且它无法被编译器检测出来。

有一种运行时检测堆栈的方法:

  1. 使用readelf工具,读出alf文件的符号表;
  2. 找到临近符号表的最后一个数据结构,为其增加一组变量,赋特定值;
  3. 在系统定时器里,持续检测这些值是否被改变。
博主
DiracFatCat
The 狄拉克肥猫 Blog
点击跳转