[开发工具] IAR如何查看程序所需最大的堆栈空间

[复制链接]
9334|8
 楼主| 墨羽谨年 发表于 2014-9-12 16:04 | 显示全部楼层 |阅读模式
我用stm32在做一个产品,现在遇到的问题是程序总是莫名的跑飞以及全局变量被无故篡改,程序在逻辑上多次检查,暂未发现问题,疑似栈溢出,但是我现在分配的堆栈各24K应该足够了(不确定),用的是IAR for arm6.60,想请问下一些问题:
1.怎么查看程序运行所需要的最大的堆栈空间呢?
2.因为程序中函数的嵌套比较多,所以想知道函数的嵌套对程序的影响?

谢谢了。
airwill 发表于 2014-9-12 21:11 | 显示全部楼层
查看程序运行所需要的最大的堆栈空间呢?
有个办法, 运行一段时间厚, 直接查堆栈, 搜索哪里开始是未修改过的初始值, 就可以确定堆栈用了多少.

不过堆栈使用有偶然性, 最大堆栈需求量不一定能捕捉到. 一定要安排余量哦
zh113214 发表于 2014-9-13 21:16 | 显示全部楼层
运行一段时间看看,是否存在偶然性!!
it_yrj 发表于 2014-9-14 10:17 | 显示全部楼层
都6.6了啊,俺还6.3呢
bear1 发表于 2014-9-15 14:17 来自手机 | 显示全部楼层
prayerwind 发表于 2014-9-15 17:50 | 显示全部楼层
你需要理解C语言是如何堆栈的,调用一个函数,会将形参,函数指针(Saved PC),程序局部变量进行堆栈。函数返回后,栈指针减去所上述的内容。

嵌套调用当然会耗费更大的栈区,当栈满时,很可能无**常保存 Saved PC。

小浣熊 发表于 2014-9-17 23:26 | 显示全部楼层
肯定是哪里出现bug了吧
 楼主| 墨羽谨年 发表于 2014-9-22 17:13 | 显示全部楼层
prayerwind 发表于 2014-9-15 17:50
你需要理解C语言是如何堆栈的,调用一个函数,会将形参,函数指针(Saved PC),程序局部变量进行堆栈。函 ...

怎么想怎么不科学,我都分配了24KB的空间给栈了,不至于还溢出啊
 楼主| 墨羽谨年 发表于 2014-9-22 17:14 | 显示全部楼层
小浣熊 发表于 2014-9-17 23:26
肯定是哪里出现bug了吧

是出现BUG了,现在苦于找不到问题到底出在哪里。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

110

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部